Improve aceent builder
This commit is contained in:
parent
bea535f5c1
commit
5e7d28bf72
4 changed files with 145 additions and 156 deletions
|
@ -1,2 +1,3 @@
|
||||||
|
* Add Greek Number Sign (`U+0374`).
|
||||||
* Fix Misplaced diacritics in `U+A7BA`, `U+A7BC`, and `U+A7BE` (#1125).
|
* Fix Misplaced diacritics in `U+A7BA`, `U+A7BC`, and `U+A7BE` (#1125).
|
||||||
* Make Modifier Letter Colon (`U+A789`) smaller than Colon (#1126).
|
* Make Modifier Letter Colon (`U+A789`) smaller than Colon (#1126).
|
||||||
|
|
|
@ -67,35 +67,23 @@ glyph-block AutoBuild-Accents : begin
|
||||||
return s
|
return s
|
||||||
|
|
||||||
local foundDecompositions {.}
|
local foundDecompositions {.}
|
||||||
define [decideName namingParts code] : begin
|
|
||||||
local baseName : glyphStore.queryNameOf namingParts.0
|
|
||||||
local glyphName baseName
|
|
||||||
foreach [part : namingParts.slice 1] : if part : begin
|
|
||||||
glyphName = glyphName + [fallback part.shortName : glyphStore.queryNameOf part]
|
|
||||||
|
|
||||||
if foundDecompositions.(glyphName) : begin
|
|
||||||
local j 2
|
|
||||||
while foundDecompositions.(glyphName + j) [inc j]
|
|
||||||
set glyphName (glyphName + j)
|
|
||||||
|
|
||||||
return glyphName
|
|
||||||
|
|
||||||
# When recursively building, `recursiveCodes` contain an array of "needed" Unicode list
|
# When recursively building, `recursiveCodes` contain an array of "needed" Unicode list
|
||||||
local goalCodes : recursiveCodes || [range 0x0000 0xFFFF]
|
local goalCodes : recursiveCodes || [range 0x0000 0xFFFF]
|
||||||
foreach code goalCodes : if [not : glyphStore.queryByUnicode code] : do
|
foreach code goalCodes : if [not : glyphStore.queryByUnicode code] : do
|
||||||
local str : String.fromCharCode code
|
local str : String.fromCodePoint code
|
||||||
local nfd : fallback customDecompositions.(str) : str.normalize 'NFD'
|
local nfd : fallback UnicodeKnowledge.decompositionOverrides.(str) : str.normalize 'NFD'
|
||||||
if (nfd.length > 1) : begin
|
if (str !== nfd) : begin
|
||||||
|
local nfdChars : Array.from nfd
|
||||||
local parts { }
|
local parts { }
|
||||||
local allFound true
|
local allFound true
|
||||||
foreach j [range 0 nfd.length] : begin
|
foreach part [items-of nfdChars] : begin
|
||||||
local part : glyphStore.queryByUnicode [nfd.charCodeAt j]
|
local part : glyphStore.queryByUnicode [part.codePointAt 0]
|
||||||
if [not part] : then
|
if [not part]
|
||||||
set allFound false
|
: then : set allFound false
|
||||||
: else
|
: else : parts.push part
|
||||||
set parts.(j) part
|
|
||||||
if allFound : begin
|
if allFound : begin
|
||||||
local glyphName : decideName parts code
|
local glyphName : 'u' + [code.toString 16 :.padStart 4 '0']
|
||||||
set parts : subParts parts
|
set parts : subParts parts
|
||||||
set foundDecompositions.(glyphName) { glyphName code parts }
|
set foundDecompositions.(glyphName) { glyphName code parts }
|
||||||
|
|
||||||
|
@ -146,7 +134,6 @@ glyph-block AutoBuild-Accents : begin
|
||||||
|
|
||||||
foreach [_id : items-of : Object.keys foundDecompositions] : do
|
foreach [_id : items-of : Object.keys foundDecompositions] : do
|
||||||
local { glyphName code parts } foundDecompositions.(_id)
|
local { glyphName code parts } foundDecompositions.(_id)
|
||||||
|
|
||||||
local saved : RootGlyphProc glyphName code parts
|
local saved : RootGlyphProc glyphName code parts
|
||||||
if saved : begin
|
if saved : begin
|
||||||
define part0Name : glyphStore.queryNameOf parts.0
|
define part0Name : glyphStore.queryNameOf parts.0
|
||||||
|
@ -165,136 +152,3 @@ glyph-block AutoBuild-Accents : begin
|
||||||
set parts1.0 : query-glyph relBase
|
set parts1.0 : query-glyph relBase
|
||||||
if [not : query-glyph relGN] : RootGlyphProc relGN null parts1
|
if [not : query-glyph relGN] : RootGlyphProc relGN null parts1
|
||||||
if [query-glyph origGN] : gr.set [query-glyph origGN] relGN
|
if [query-glyph origGN] : gr.set [query-glyph origGN] relGN
|
||||||
|
|
||||||
define customDecompositions : object
|
|
||||||
# Latvians use comma instead of cedillas in several letters.
|
|
||||||
# Record them as custom decomposition.
|
|
||||||
."\u0156" "R\u0326"
|
|
||||||
."\u0157" "r\u0326"
|
|
||||||
."\u0136" "K\u0326"
|
|
||||||
."\u0137" "k\u0326"
|
|
||||||
."\u0145" "N\u0326"
|
|
||||||
."\u0146" "n\u0326"
|
|
||||||
."\u013B" "L\u0326"
|
|
||||||
."\u013C" "l\u0326"
|
|
||||||
."\u0122" "G\u0326"
|
|
||||||
."\u0123" "g\u0312"
|
|
||||||
|
|
||||||
# autobuild Latin glyphs
|
|
||||||
."\u0167" "t\u0335"
|
|
||||||
."\u0197" "I\u0335"
|
|
||||||
."\u019A" "l\u0335"
|
|
||||||
."\u0248" "J\u0335"
|
|
||||||
."\u0249" "j\u0335"
|
|
||||||
."\u0268" "i\u0335"
|
|
||||||
."\u024D" "r\u0335"
|
|
||||||
."\u1D7B" "\u026A\u0335"
|
|
||||||
."\u1D7C" "\u0269\u0335"
|
|
||||||
|
|
||||||
."\u1D7F" "\u028A\uE001"
|
|
||||||
."\u0289" "u\uE001"
|
|
||||||
."\u0244" "U\uE001"
|
|
||||||
."\u01E5" "g\uE001"
|
|
||||||
."\u01BB" "2\uE001"
|
|
||||||
."\u04B0" "\u04AE\u0335"
|
|
||||||
."\u04B1" "\u04AF\u0335"
|
|
||||||
."\u024F" "y\uE001"
|
|
||||||
."\uAB30" "\uAB64\uE001"
|
|
||||||
."\u1D7D" "p\uE001"
|
|
||||||
|
|
||||||
."\u023A" "A\u0338"
|
|
||||||
."\u023B" "C\u0338"
|
|
||||||
."\u023C" "c\u0337"
|
|
||||||
."\u023E" "T\u0338"
|
|
||||||
."\u0246" "E\u0338"
|
|
||||||
."\u0247" "e\u0337"
|
|
||||||
|
|
||||||
."\u0290" "z\u0322"
|
|
||||||
."\u1D90" "\u0251\u0322"
|
|
||||||
|
|
||||||
."\u1E10" "D\u0326"
|
|
||||||
."\u1E11" "d\u0326"
|
|
||||||
|
|
||||||
."\u1E9C" "\u017F\uE000"
|
|
||||||
|
|
||||||
."\u1EDC" "\u01A0\u0300"
|
|
||||||
."\u1EDD" "\u01A1\u0300"
|
|
||||||
."\u1EDA" "\u01A0\u0301"
|
|
||||||
."\u1EDB" "\u01A1\u0301"
|
|
||||||
."\u1EDE" "\u01A0\u0309"
|
|
||||||
."\u1EDF" "\u01A1\u0309"
|
|
||||||
."\u1EE0" "\u01A0\u0303"
|
|
||||||
."\u1EE1" "\u01A1\u0303"
|
|
||||||
."\u1EE2" "\u01A0\u0323"
|
|
||||||
."\u1EE3" "\u01A1\u0323"
|
|
||||||
|
|
||||||
# Cyrillic composite characters
|
|
||||||
."\u0498" "\u0417\u0327"
|
|
||||||
."\u0499" "\u0437\u0327"
|
|
||||||
."\u04AA" "\u0421\u0327"
|
|
||||||
."\u04AB" "\u0441\u0327"
|
|
||||||
."\u047C" "\uA64C\u0486\u0487"
|
|
||||||
."\u047D" "\uA64D\u0486\u0487"
|
|
||||||
|
|
||||||
# Spacing modifers
|
|
||||||
."\u02CB" "\uE00D\u0300"
|
|
||||||
."\u02CA" "\uE00D\u0301"
|
|
||||||
."\u02C6" "\uE00D\u0302"
|
|
||||||
."\u02DC" "\uE00D\u0303"
|
|
||||||
."\u00AF" "\uE00D\u0304"
|
|
||||||
."\u02C9" "\uE00D\u0304"
|
|
||||||
."\u02D8" "\uE00D\u0306"
|
|
||||||
."\u02D9" "\uE00D\u0307"
|
|
||||||
."\u00A8" "\uE00D\u0308"
|
|
||||||
."\u02DA" "\uE00D\u030A"
|
|
||||||
."\u02C7" "\uE00D\u030C"
|
|
||||||
."\u00B8" "\uE00D\u0327"
|
|
||||||
."\u02CD" "\uE00D\u0331"
|
|
||||||
."\u02CE" "\uE00D\u0316"
|
|
||||||
."\u02CF" "\uE00D\u0317"
|
|
||||||
."\u02D2" "\uE00D\u0339"
|
|
||||||
."\u02D3" "\uE00D\u031C"
|
|
||||||
."\u02D4" "\uE00D\u031D"
|
|
||||||
."\u02D5" "\uE00D\u031E"
|
|
||||||
."\u02D6" "\uE00D\u031F"
|
|
||||||
."\u02D7" "\uE00D\u0320"
|
|
||||||
."\u02DB" "\uE00D\u0328"
|
|
||||||
."\u02DD" "\uE00D\u030B"
|
|
||||||
."\u02DF" "\uE00D\u033D"
|
|
||||||
."\u02EC" "\uE00D\u032C"
|
|
||||||
."\u02ED" "\uE00D\u033F"
|
|
||||||
."\u02F3" "\uE00D\u0325"
|
|
||||||
."\u02F7" "\uE00D\u0330"
|
|
||||||
."\u02BE" "\uE00D\u0357"
|
|
||||||
."\u02BF" "\uE00D\u0351"
|
|
||||||
."\u02C2" "\uE00D\u1DFE"
|
|
||||||
."\u02C3" "\uE00D\u0350"
|
|
||||||
."\u02C4" "\uE00D\uE002"
|
|
||||||
."\u02C5" "\uE00D\uE003"
|
|
||||||
."\u02EF" "\uE00D\uE005"
|
|
||||||
."\u02F0" "\uE00D\uE004"
|
|
||||||
."\u02F1" "\uE00D\u0354"
|
|
||||||
."\u02F2" "\uE00D\u0355"
|
|
||||||
|
|
||||||
."\u1FED" "\uE00D\u0308\u0300"
|
|
||||||
."\u1FEE" "\uE00D\u0308\u0301"
|
|
||||||
."\u1FEF" "\uE00D\u0300"
|
|
||||||
."\u1FFD" "\uE00D\u0301"
|
|
||||||
."\u1FFE" "\uE00D\u0314"
|
|
||||||
."\u1FBD" "\uE00D\u0313"
|
|
||||||
."\u1FBE" "\uE00D\u0345"
|
|
||||||
."\u1FBF" "\uE00D\u0313"
|
|
||||||
."\u1FC0" "\uE00D\u0342"
|
|
||||||
."\u1FC1" "\uE00D\u0308\u0342"
|
|
||||||
."\u0384" "\uE00D\u0301"
|
|
||||||
."\u0385" "\uE00D\u0308\u0301"
|
|
||||||
."\u037A" "\uE00D\u0345"
|
|
||||||
."\uAB30" "\u0251\uE001"
|
|
||||||
."\uA7BB" "a\uE010"
|
|
||||||
."\uA7BD" "i\uE010"
|
|
||||||
."\uA7BF" "u\uE010"
|
|
||||||
|
|
||||||
# Suppress incorrect slashed arrows... so far
|
|
||||||
."\u219A" ""
|
|
||||||
."\u219B" ""
|
|
||||||
."\u21AE" ""
|
|
||||||
|
|
|
@ -54,6 +54,7 @@ glyph-block Symbol-Punctuation-Ascii-Marks : begin
|
||||||
include : MarkZoom currentGlyph.advanceWidth
|
include : MarkZoom currentGlyph.advanceWidth
|
||||||
|
|
||||||
alias 'mdfPrime' 0x2B9 'prime'
|
alias 'mdfPrime' 0x2B9 'prime'
|
||||||
|
alias 'grek/numberSign' 0x374 'prime'
|
||||||
alias 'mdfDoublePrime' 0x2BA 'doubleprime'
|
alias 'mdfDoublePrime' 0x2BA 'doubleprime'
|
||||||
alias 'mdfTurncomma' 0x2BB 'openSingleQuote'
|
alias 'mdfTurncomma' 0x2BB 'openSingleQuote'
|
||||||
alias 'mdfApostrophe' 0x2BC 'closeSingleQuote'
|
alias 'mdfApostrophe' 0x2BC 'closeSingleQuote'
|
||||||
|
|
|
@ -30,3 +30,136 @@ export : define markCompositionTf : object
|
||||||
'perispomeniAbove' 'dasiaPerispomeni'
|
'perispomeniAbove' 'dasiaPerispomeni'
|
||||||
'cyrlPsiliAbove' : object
|
'cyrlPsiliAbove' : object
|
||||||
'cyrlPokrytieAbove' 'cyrlPsiliPokrytieAbove'
|
'cyrlPokrytieAbove' 'cyrlPsiliPokrytieAbove'
|
||||||
|
|
||||||
|
export : define decompositionOverrides : object
|
||||||
|
# Latvians use comma instead of cedillas in several letters.
|
||||||
|
# Record them as custom decomposition.
|
||||||
|
."\u0156" "R\u0326"
|
||||||
|
."\u0157" "r\u0326"
|
||||||
|
."\u0136" "K\u0326"
|
||||||
|
."\u0137" "k\u0326"
|
||||||
|
."\u0145" "N\u0326"
|
||||||
|
."\u0146" "n\u0326"
|
||||||
|
."\u013B" "L\u0326"
|
||||||
|
."\u013C" "l\u0326"
|
||||||
|
."\u0122" "G\u0326"
|
||||||
|
."\u0123" "g\u0312"
|
||||||
|
|
||||||
|
# autobuild Latin glyphs
|
||||||
|
."\u0167" "t\u0335"
|
||||||
|
."\u0197" "I\u0335"
|
||||||
|
."\u019A" "l\u0335"
|
||||||
|
."\u0248" "J\u0335"
|
||||||
|
."\u0249" "j\u0335"
|
||||||
|
."\u0268" "i\u0335"
|
||||||
|
."\u024D" "r\u0335"
|
||||||
|
."\u1D7B" "\u026A\u0335"
|
||||||
|
."\u1D7C" "\u0269\u0335"
|
||||||
|
|
||||||
|
."\u1D7F" "\u028A\uE001"
|
||||||
|
."\u0289" "u\uE001"
|
||||||
|
."\u0244" "U\uE001"
|
||||||
|
."\u01E5" "g\uE001"
|
||||||
|
."\u01BB" "2\uE001"
|
||||||
|
."\u04B0" "\u04AE\u0335"
|
||||||
|
."\u04B1" "\u04AF\u0335"
|
||||||
|
."\u024F" "y\uE001"
|
||||||
|
."\uAB30" "\uAB64\uE001"
|
||||||
|
."\u1D7D" "p\uE001"
|
||||||
|
|
||||||
|
."\u023A" "A\u0338"
|
||||||
|
."\u023B" "C\u0338"
|
||||||
|
."\u023C" "c\u0337"
|
||||||
|
."\u023E" "T\u0338"
|
||||||
|
."\u0246" "E\u0338"
|
||||||
|
."\u0247" "e\u0337"
|
||||||
|
|
||||||
|
."\u0290" "z\u0322"
|
||||||
|
."\u1D90" "\u0251\u0322"
|
||||||
|
|
||||||
|
."\u1E10" "D\u0326"
|
||||||
|
."\u1E11" "d\u0326"
|
||||||
|
|
||||||
|
."\u1E9C" "\u017F\uE000"
|
||||||
|
|
||||||
|
."\u1EDC" "\u01A0\u0300"
|
||||||
|
."\u1EDD" "\u01A1\u0300"
|
||||||
|
."\u1EDA" "\u01A0\u0301"
|
||||||
|
."\u1EDB" "\u01A1\u0301"
|
||||||
|
."\u1EDE" "\u01A0\u0309"
|
||||||
|
."\u1EDF" "\u01A1\u0309"
|
||||||
|
."\u1EE0" "\u01A0\u0303"
|
||||||
|
."\u1EE1" "\u01A1\u0303"
|
||||||
|
."\u1EE2" "\u01A0\u0323"
|
||||||
|
."\u1EE3" "\u01A1\u0323"
|
||||||
|
|
||||||
|
# Cyrillic composite characters
|
||||||
|
."\u0498" "\u0417\u0327"
|
||||||
|
."\u0499" "\u0437\u0327"
|
||||||
|
."\u04AA" "\u0421\u0327"
|
||||||
|
."\u04AB" "\u0441\u0327"
|
||||||
|
."\u047C" "\uA64C\u0486\u0487"
|
||||||
|
."\u047D" "\uA64D\u0486\u0487"
|
||||||
|
|
||||||
|
# Spacing modifers
|
||||||
|
."\u02CB" "\uE00D\u0300"
|
||||||
|
."\u02CA" "\uE00D\u0301"
|
||||||
|
."\u02C6" "\uE00D\u0302"
|
||||||
|
."\u02DC" "\uE00D\u0303"
|
||||||
|
."\u00AF" "\uE00D\u0304"
|
||||||
|
."\u02C9" "\uE00D\u0304"
|
||||||
|
."\u02D8" "\uE00D\u0306"
|
||||||
|
."\u02D9" "\uE00D\u0307"
|
||||||
|
."\u00A8" "\uE00D\u0308"
|
||||||
|
."\u02DA" "\uE00D\u030A"
|
||||||
|
."\u02C7" "\uE00D\u030C"
|
||||||
|
."\u00B8" "\uE00D\u0327"
|
||||||
|
."\u02CD" "\uE00D\u0331"
|
||||||
|
."\u02CE" "\uE00D\u0316"
|
||||||
|
."\u02CF" "\uE00D\u0317"
|
||||||
|
."\u02D2" "\uE00D\u0339"
|
||||||
|
."\u02D3" "\uE00D\u031C"
|
||||||
|
."\u02D4" "\uE00D\u031D"
|
||||||
|
."\u02D5" "\uE00D\u031E"
|
||||||
|
."\u02D6" "\uE00D\u031F"
|
||||||
|
."\u02D7" "\uE00D\u0320"
|
||||||
|
."\u02DB" "\uE00D\u0328"
|
||||||
|
."\u02DD" "\uE00D\u030B"
|
||||||
|
."\u02DF" "\uE00D\u033D"
|
||||||
|
."\u02EC" "\uE00D\u032C"
|
||||||
|
."\u02ED" "\uE00D\u033F"
|
||||||
|
."\u02F3" "\uE00D\u0325"
|
||||||
|
."\u02F7" "\uE00D\u0330"
|
||||||
|
."\u02BE" "\uE00D\u0357"
|
||||||
|
."\u02BF" "\uE00D\u0351"
|
||||||
|
."\u02C2" "\uE00D\u1DFE"
|
||||||
|
."\u02C3" "\uE00D\u0350"
|
||||||
|
."\u02C4" "\uE00D\uE002"
|
||||||
|
."\u02C5" "\uE00D\uE003"
|
||||||
|
."\u02EF" "\uE00D\uE005"
|
||||||
|
."\u02F0" "\uE00D\uE004"
|
||||||
|
."\u02F1" "\uE00D\u0354"
|
||||||
|
."\u02F2" "\uE00D\u0355"
|
||||||
|
|
||||||
|
."\u1FED" "\uE00D\u0308\u0300"
|
||||||
|
."\u1FEE" "\uE00D\u0308\u0301"
|
||||||
|
."\u1FEF" "\uE00D\u0300"
|
||||||
|
."\u1FFD" "\uE00D\u0301"
|
||||||
|
."\u1FFE" "\uE00D\u0314"
|
||||||
|
."\u1FBD" "\uE00D\u0313"
|
||||||
|
."\u1FBE" "\uE00D\u0345"
|
||||||
|
."\u1FBF" "\uE00D\u0313"
|
||||||
|
."\u1FC0" "\uE00D\u0342"
|
||||||
|
."\u1FC1" "\uE00D\u0308\u0342"
|
||||||
|
."\u0384" "\uE00D\u0301"
|
||||||
|
."\u0385" "\uE00D\u0308\u0301"
|
||||||
|
."\u037A" "\uE00D\u0345"
|
||||||
|
."\uAB30" "\u0251\uE001"
|
||||||
|
."\uA7BB" "a\uE010"
|
||||||
|
."\uA7BD" "i\uE010"
|
||||||
|
."\uA7BF" "u\uE010"
|
||||||
|
|
||||||
|
# Suppress incorrect slashed arrows... so far
|
||||||
|
."\u219A" ""
|
||||||
|
."\u219B" ""
|
||||||
|
."\u21AE" ""
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue