     graphemes iota { SpacingMark } connect
     { Prepend } graphemes iota connect ;
 
-SYMBOL: grapheme-table
+"grapheme-table" create-in
+graphemes init-table table
+[ make-grapheme-table finish-table ] with-variable
+define-constant
+>>
 
 : grapheme-break? ( class1 class2 -- ? )
-    grapheme-table get-global nth nth not ;
+    grapheme-table nth nth not ;
 
 PRIVATE>
 

USING: accessors alien.syntax arrays assocs combinators
combinators.short-circuit compiler.units fry interval-maps io
io.encodings.ascii io.files kernel literals locals make math
math.parser math.ranges memoize namespaces sequences
sets simple-flat-file splitting unicode.categories
unicode.categories.syntax unicode.data unicode.normalize
unicode.normalize.private words ;
FROM: sequences => change-nth ;
IN: unicode.breaks

<PRIVATE
! Grapheme breaks

CONSTANT: Any 0
CONSTANT: L 1
CONSTANT: V 2

    { "ExtendNumLet" 12 }
}

"word-break-table" create-in
"vocab:unicode/data/WordBreakProperty.txt"
load-interval-file dup array>>
[ 2 swap [ word-break-classes at ] change-nth ] each
define-constant
>>

: word-break-prop ( char -- word-break-prop )
    word-break-table interval-at wOther or ;

<<
SYMBOL: check-letter-before
SYMBOL: check-letter-after
SYMBOL: check-number-before
