change clustering behavior

main
Matthew Butterick 4 years ago
parent 73341a8310
commit 23421dd831

@ -7,164 +7,169 @@
(define hb-direction-values
'(HB_DIRECTION_INVALID = 0
HB_DIRECTION_LTR = 4
HB_DIRECTION_RTL = 5
HB_DIRECTION_TTB = 6
HB_DIRECTION_BTT = 7))
HB_DIRECTION_LTR = 4
HB_DIRECTION_RTL = 5
HB_DIRECTION_TTB = 6
HB_DIRECTION_BTT = 7))
(define hb-cluster-levels
'(HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES = 0
HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS = 1
HB_BUFFER_CLUSTER_LEVEL_CHARACTERS = 2))
(define (->tag bstr)
(integer-bytes->integer bstr #f #;(= unsigned) 'big-endian))
(define hb-script-values
`(HB_SCRIPT_COMMON = ,(->tag #"Zyyy")
HB_SCRIPT_INHERITED = ,(->tag #"Zinh")
HB_SCRIPT_UNKNOWN = ,(->tag #"Zzzz")
HB_SCRIPT_ARABIC = ,(->tag #"Arab")
HB_SCRIPT_ARMENIAN
HB_SCRIPT_BENGALI
HB_SCRIPT_CYRILLIC
HB_SCRIPT_DEVANAGARI
HB_SCRIPT_GEORGIAN
HB_SCRIPT_GREEK
HB_SCRIPT_GUJARATI
HB_SCRIPT_GURMUKHI
HB_SCRIPT_HANGUL
HB_SCRIPT_HAN
HB_SCRIPT_HEBREW
HB_SCRIPT_HIRAGANA
HB_SCRIPT_KANNADA
HB_SCRIPT_KATAKANA
HB_SCRIPT_LAO
HB_SCRIPT_LATIN = ,(->tag #"Latn")
HB_SCRIPT_MALAYALAM
HB_SCRIPT_ORIYA
HB_SCRIPT_TAMIL
HB_SCRIPT_TELUGU
HB_SCRIPT_THAI
HB_SCRIPT_TIBETAN
HB_SCRIPT_BOPOMOFO
HB_SCRIPT_BRAILLE
HB_SCRIPT_CANADIAN_SYLLABICS
HB_SCRIPT_CHEROKEE
HB_SCRIPT_ETHIOPIC
HB_SCRIPT_KHMER
HB_SCRIPT_MONGOLIAN
HB_SCRIPT_MYANMAR
HB_SCRIPT_OGHAM
HB_SCRIPT_RUNIC
HB_SCRIPT_SINHALA
HB_SCRIPT_SYRIAC
HB_SCRIPT_THAANA
HB_SCRIPT_YI
HB_SCRIPT_DESERET
HB_SCRIPT_GOTHIC
HB_SCRIPT_OLD_ITALIC
HB_SCRIPT_BUHID
HB_SCRIPT_HANUNOO
HB_SCRIPT_TAGALOG
HB_SCRIPT_TAGBANWA
HB_SCRIPT_CYPRIOT
HB_SCRIPT_LIMBU
HB_SCRIPT_LINEAR_B
HB_SCRIPT_OSMANYA
HB_SCRIPT_SHAVIAN
HB_SCRIPT_TAI_LE
HB_SCRIPT_UGARITIC
HB_SCRIPT_BUGINESE
HB_SCRIPT_COPTIC
HB_SCRIPT_GLAGOLITIC
HB_SCRIPT_KHAROSHTHI
HB_SCRIPT_NEW_TAI_LUE
HB_SCRIPT_OLD_PERSIAN
HB_SCRIPT_SYLOTI_NAGRI
HB_SCRIPT_TIFINAGH
HB_SCRIPT_BALINESE
HB_SCRIPT_CUNEIFORM
HB_SCRIPT_NKO
HB_SCRIPT_PHAGS_PA
HB_SCRIPT_PHOENICIAN
HB_SCRIPT_CARIAN
HB_SCRIPT_CHAM
HB_SCRIPT_KAYAH_LI
HB_SCRIPT_LEPCHA
HB_SCRIPT_LYCIAN
HB_SCRIPT_LYDIAN
HB_SCRIPT_OL_CHIKI
HB_SCRIPT_REJANG
HB_SCRIPT_SAURASHTRA
HB_SCRIPT_SUNDANESE
HB_SCRIPT_VAI
HB_SCRIPT_AVESTAN
HB_SCRIPT_BAMUM
HB_SCRIPT_EGYPTIAN_HIEROGLYPHS
HB_SCRIPT_IMPERIAL_ARAMAIC
HB_SCRIPT_INSCRIPTIONAL_PAHLAVI
HB_SCRIPT_INSCRIPTIONAL_PARTHIAN
HB_SCRIPT_JAVANESE
HB_SCRIPT_KAITHI
HB_SCRIPT_LISU
HB_SCRIPT_MEETEI_MAYEK
HB_SCRIPT_OLD_SOUTH_ARABIAN
HB_SCRIPT_OLD_TURKIC
HB_SCRIPT_SAMARITAN
HB_SCRIPT_TAI_THAM
HB_SCRIPT_TAI_VIET
HB_SCRIPT_BATAK
HB_SCRIPT_BRAHMI
HB_SCRIPT_MANDAIC
HB_SCRIPT_CHAKMA
HB_SCRIPT_MEROITIC_CURSIVE
HB_SCRIPT_MEROITIC_HIEROGLYPHS
HB_SCRIPT_MIAO
HB_SCRIPT_SHARADA
HB_SCRIPT_SORA_SOMPENG
HB_SCRIPT_TAKRI
HB_SCRIPT_BASSA_VAH
HB_SCRIPT_CAUCASIAN_ALBANIAN
HB_SCRIPT_DUPLOYAN
HB_SCRIPT_ELBASAN
HB_SCRIPT_GRANTHA
HB_SCRIPT_KHOJKI
HB_SCRIPT_KHUDAWADI
HB_SCRIPT_LINEAR_A
HB_SCRIPT_MAHAJANI
HB_SCRIPT_MANICHAEAN
HB_SCRIPT_MENDE_KIKAKUI
HB_SCRIPT_MODI
HB_SCRIPT_MRO
HB_SCRIPT_NABATAEAN
HB_SCRIPT_OLD_NORTH_ARABIAN
HB_SCRIPT_OLD_PERMIC
HB_SCRIPT_PAHAWH_HMONG
HB_SCRIPT_PALMYRENE
HB_SCRIPT_PAU_CIN_HAU
HB_SCRIPT_PSALTER_PAHLAVI
HB_SCRIPT_SIDDHAM
HB_SCRIPT_TIRHUTA
HB_SCRIPT_WARANG_CITI
HB_SCRIPT_AHOM
HB_SCRIPT_ANATOLIAN_HIEROGLYPHS
HB_SCRIPT_HATRAN
HB_SCRIPT_MULTANI
HB_SCRIPT_OLD_HUNGARIAN
HB_SCRIPT_SIGNWRITING
HB_SCRIPT_ADLAM
HB_SCRIPT_BHAIKSUKI
HB_SCRIPT_MARCHEN
HB_SCRIPT_OSAGE
HB_SCRIPT_TANGUT
HB_SCRIPT_NEWA
HB_SCRIPT_MASARAM_GONDI
HB_SCRIPT_NUSHU
HB_SCRIPT_SOYOMBO
HB_SCRIPT_ZANABAZAR_SQUARE
HB_SCRIPT_DOGRA
HB_SCRIPT_GUNJALA_GONDI
HB_SCRIPT_HANIFI_ROHINGYA
HB_SCRIPT_MAKASAR
HB_SCRIPT_MEDEFAIDRIN
HB_SCRIPT_OLD_SOGDIAN
HB_SCRIPT_SOGDIAN
HB_SCRIPT_INVALID = ,(->tag #"\0\0\0\0")
_HB_SCRIPT_MAX_VALUE
_HB_SCRIPT_MAX_VALUE_SIGNED))
HB_SCRIPT_INHERITED = ,(->tag #"Zinh")
HB_SCRIPT_UNKNOWN = ,(->tag #"Zzzz")
HB_SCRIPT_ARABIC = ,(->tag #"Arab")
HB_SCRIPT_ARMENIAN
HB_SCRIPT_BENGALI
HB_SCRIPT_CYRILLIC
HB_SCRIPT_DEVANAGARI
HB_SCRIPT_GEORGIAN
HB_SCRIPT_GREEK
HB_SCRIPT_GUJARATI
HB_SCRIPT_GURMUKHI
HB_SCRIPT_HANGUL
HB_SCRIPT_HAN
HB_SCRIPT_HEBREW
HB_SCRIPT_HIRAGANA
HB_SCRIPT_KANNADA
HB_SCRIPT_KATAKANA
HB_SCRIPT_LAO
HB_SCRIPT_LATIN = ,(->tag #"Latn")
HB_SCRIPT_MALAYALAM
HB_SCRIPT_ORIYA
HB_SCRIPT_TAMIL
HB_SCRIPT_TELUGU
HB_SCRIPT_THAI
HB_SCRIPT_TIBETAN
HB_SCRIPT_BOPOMOFO
HB_SCRIPT_BRAILLE
HB_SCRIPT_CANADIAN_SYLLABICS
HB_SCRIPT_CHEROKEE
HB_SCRIPT_ETHIOPIC
HB_SCRIPT_KHMER
HB_SCRIPT_MONGOLIAN
HB_SCRIPT_MYANMAR
HB_SCRIPT_OGHAM
HB_SCRIPT_RUNIC
HB_SCRIPT_SINHALA
HB_SCRIPT_SYRIAC
HB_SCRIPT_THAANA
HB_SCRIPT_YI
HB_SCRIPT_DESERET
HB_SCRIPT_GOTHIC
HB_SCRIPT_OLD_ITALIC
HB_SCRIPT_BUHID
HB_SCRIPT_HANUNOO
HB_SCRIPT_TAGALOG
HB_SCRIPT_TAGBANWA
HB_SCRIPT_CYPRIOT
HB_SCRIPT_LIMBU
HB_SCRIPT_LINEAR_B
HB_SCRIPT_OSMANYA
HB_SCRIPT_SHAVIAN
HB_SCRIPT_TAI_LE
HB_SCRIPT_UGARITIC
HB_SCRIPT_BUGINESE
HB_SCRIPT_COPTIC
HB_SCRIPT_GLAGOLITIC
HB_SCRIPT_KHAROSHTHI
HB_SCRIPT_NEW_TAI_LUE
HB_SCRIPT_OLD_PERSIAN
HB_SCRIPT_SYLOTI_NAGRI
HB_SCRIPT_TIFINAGH
HB_SCRIPT_BALINESE
HB_SCRIPT_CUNEIFORM
HB_SCRIPT_NKO
HB_SCRIPT_PHAGS_PA
HB_SCRIPT_PHOENICIAN
HB_SCRIPT_CARIAN
HB_SCRIPT_CHAM
HB_SCRIPT_KAYAH_LI
HB_SCRIPT_LEPCHA
HB_SCRIPT_LYCIAN
HB_SCRIPT_LYDIAN
HB_SCRIPT_OL_CHIKI
HB_SCRIPT_REJANG
HB_SCRIPT_SAURASHTRA
HB_SCRIPT_SUNDANESE
HB_SCRIPT_VAI
HB_SCRIPT_AVESTAN
HB_SCRIPT_BAMUM
HB_SCRIPT_EGYPTIAN_HIEROGLYPHS
HB_SCRIPT_IMPERIAL_ARAMAIC
HB_SCRIPT_INSCRIPTIONAL_PAHLAVI
HB_SCRIPT_INSCRIPTIONAL_PARTHIAN
HB_SCRIPT_JAVANESE
HB_SCRIPT_KAITHI
HB_SCRIPT_LISU
HB_SCRIPT_MEETEI_MAYEK
HB_SCRIPT_OLD_SOUTH_ARABIAN
HB_SCRIPT_OLD_TURKIC
HB_SCRIPT_SAMARITAN
HB_SCRIPT_TAI_THAM
HB_SCRIPT_TAI_VIET
HB_SCRIPT_BATAK
HB_SCRIPT_BRAHMI
HB_SCRIPT_MANDAIC
HB_SCRIPT_CHAKMA
HB_SCRIPT_MEROITIC_CURSIVE
HB_SCRIPT_MEROITIC_HIEROGLYPHS
HB_SCRIPT_MIAO
HB_SCRIPT_SHARADA
HB_SCRIPT_SORA_SOMPENG
HB_SCRIPT_TAKRI
HB_SCRIPT_BASSA_VAH
HB_SCRIPT_CAUCASIAN_ALBANIAN
HB_SCRIPT_DUPLOYAN
HB_SCRIPT_ELBASAN
HB_SCRIPT_GRANTHA
HB_SCRIPT_KHOJKI
HB_SCRIPT_KHUDAWADI
HB_SCRIPT_LINEAR_A
HB_SCRIPT_MAHAJANI
HB_SCRIPT_MANICHAEAN
HB_SCRIPT_MENDE_KIKAKUI
HB_SCRIPT_MODI
HB_SCRIPT_MRO
HB_SCRIPT_NABATAEAN
HB_SCRIPT_OLD_NORTH_ARABIAN
HB_SCRIPT_OLD_PERMIC
HB_SCRIPT_PAHAWH_HMONG
HB_SCRIPT_PALMYRENE
HB_SCRIPT_PAU_CIN_HAU
HB_SCRIPT_PSALTER_PAHLAVI
HB_SCRIPT_SIDDHAM
HB_SCRIPT_TIRHUTA
HB_SCRIPT_WARANG_CITI
HB_SCRIPT_AHOM
HB_SCRIPT_ANATOLIAN_HIEROGLYPHS
HB_SCRIPT_HATRAN
HB_SCRIPT_MULTANI
HB_SCRIPT_OLD_HUNGARIAN
HB_SCRIPT_SIGNWRITING
HB_SCRIPT_ADLAM
HB_SCRIPT_BHAIKSUKI
HB_SCRIPT_MARCHEN
HB_SCRIPT_OSAGE
HB_SCRIPT_TANGUT
HB_SCRIPT_NEWA
HB_SCRIPT_MASARAM_GONDI
HB_SCRIPT_NUSHU
HB_SCRIPT_SOYOMBO
HB_SCRIPT_ZANABAZAR_SQUARE
HB_SCRIPT_DOGRA
HB_SCRIPT_GUNJALA_GONDI
HB_SCRIPT_HANIFI_ROHINGYA
HB_SCRIPT_MAKASAR
HB_SCRIPT_MEDEFAIDRIN
HB_SCRIPT_OLD_SOGDIAN
HB_SCRIPT_SOGDIAN
HB_SCRIPT_INVALID = ,(->tag #"\0\0\0\0")
_HB_SCRIPT_MAX_VALUE
_HB_SCRIPT_MAX_VALUE_SIGNED))

@ -33,6 +33,7 @@
(define (default-buffer-setup buf)
(hb_buffer_set_direction buf 'HB_DIRECTION_LTR)
(hb_buffer_set_script buf 'HB_SCRIPT_LATIN)
(hb_buffer_set_cluster_level buf 'HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS)
(hb_buffer_set_language buf (hb_language_from_string #"en"))
buf)
@ -55,6 +56,10 @@
(_int = text-length)
-> _void))
(define _hb_cluster_t (_enum hb-cluster-levels))
(define-harfbuzz hb_buffer_set_cluster_level (_fun _hb_buffer_t _hb_cluster_t -> _void))
(define-harfbuzz hb_buffer_get_cluster_level (_fun _hb_buffer_t -> _hb_cluster_t))
(define _hb_direction_t (_enum hb-direction-values))
(define-harfbuzz hb_buffer_set_direction (_fun _hb_buffer_t _hb_direction_t -> _void))
(define-harfbuzz hb_buffer_get_direction (_fun _hb_buffer_t -> _hb_direction_t))

Loading…
Cancel
Save