Finish work of #2310 . (#2311)

This commit is contained in:
John McWilliams 2024-04-23 20:30:40 -04:00 committed by GitHub
parent debba0d9fb
commit ff58ccd47e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 49 additions and 32 deletions

View file

@ -1,4 +1,4 @@
* \[**Breaking**\] A separate variant selector, `ij-dot`, was added to allow users to configure the shape of the dots in `i` and `j` separately. * \[**Breaking**\] A separate variant selector, `tittle`, was added to allow users to configure the shape of the dots in `i` and `j` separately.
- As a result, feature tags for `cv95` ... `cv99`, `VSAA` ... `VSAQ` are shifted by one place to `cv96` ... `cv99` `VSAA`, `VSAB` ... `VSAR`. - As a result, feature tags for `cv95` ... `cv99`, `VSAA` ... `VSAQ` are shifted by one place to `cv96` ... `cv99` `VSAA`, `VSAB` ... `VSAR`.
* Refine shape of CYRILLIC CAPITAL LETTER SHHA (`U+04BA`). * Refine shape of CYRILLIC CAPITAL LETTER SHHA (`U+04BA`).
* Fix H bar position of CYRILLIC {CAPITAL|SMALL} LETTER NJE (`U+040A`, `U+045A`). * Fix H bar position of CYRILLIC {CAPITAL|SMALL} LETTER NJE (`U+040A`, `U+045A`).

View file

@ -301,11 +301,13 @@ glyph-block Letter-Latin-Lower-I : begin
select-variant 'dotlessiRetroflexHook' (follow -- 'dotlessi') select-variant 'dotlessiRetroflexHook' (follow -- 'dotlessi')
CreateOgonekComposition 'iOgonek.dotless' null 'dotlessi' CreateOgonekComposition 'iOgonek.dotless' null 'dotlessi'
CreateAccentedComposition 'i' 'i' 'dotlessi' 'dotAboveIJ' CreateAccentedComposition 'i' 'i' 'dotlessi' 'tittleAbove'
CreateAccentedComposition 'i/sansSerif' null 'dotlessi/sansSerif' 'dotAboveIJ' CreateAccentedComposition 'i/sansSerif' null 'dotlessi/sansSerif' 'tittleAbove'
CreateAccentedComposition 'i/compLigRight' null 'dotlessi/compLigRight' 'dotAboveIJ' CreateAccentedComposition 'i/compLigRight' null 'dotlessi/compLigRight' 'tittleAbove'
link-reduced-variant 'i/sansSerif' 'i' MathSansSerif link-reduced-variant 'i/sansSerif' 'i' MathSansSerif
CreateAccentedComposition 'i.TRK' null 'dotlessi' 'dotAbove'
alias 'cyrl/iUkrainian' 0x456 'i' alias 'cyrl/iUkrainian' 0x456 'i'
CreateAccentedComposition 'cyrl/yi' 0x457 'dotlessi' 'dieresisAbove' CreateAccentedComposition 'cyrl/yi' 0x457 'dotlessi' 'dieresisAbove'
@ -324,9 +326,9 @@ glyph-block Letter-Latin-Lower-I : begin
CreateAccentedComposition 'cyrl/ghe.SRB' null 'dotlessi/tailed' 'macronAbove' CreateAccentedComposition 'cyrl/ghe.SRB' null 'dotlessi/tailed' 'macronAbove'
CreateMultiAccentedComposition 'cyrl/gje.SRB' null 'dotlessi/tailed' { 'macronAbove' 'acuteAbove' } CreateMultiAccentedComposition 'cyrl/gje.SRB' null 'dotlessi/tailed' { 'macronAbove' 'acuteAbove' }
CreateAccentedComposition 'dotlessiBarOver' null 'dotlessi' 'barOver' CreateAccentedComposition 'dotlessiBarOver' null 'dotlessi' 'barOver'
CreateAccentedComposition 'iBarOver' 0x268 'dotlessiBarOver' 'dotAbove' CreateAccentedComposition 'iBarOver' 0x268 'dotlessiBarOver' 'tittleAbove'
CreateAccentedComposition 'iOgonek' 0x12F 'iOgonek.dotless' 'dotAbove' CreateAccentedComposition 'iOgonek' 0x12F 'iOgonek.dotless' 'tittleAbove'
CreateAccentedComposition 'iRetroflexHook' 0x1D96 'dotlessiRetroflexHook' 'dotAbove' CreateAccentedComposition 'iRetroflexHook' 0x1D96 'dotlessiRetroflexHook' 'tittleAbove'
do "l glyphs" do "l glyphs"
select-variant 'l' 'l' select-variant 'l' 'l'

View file

@ -115,15 +115,19 @@ glyph-block Letter-Latin-Lower-J : begin
include : TopHook.mBarOuter xMiddle (XH + O) XH include : TopHook.mBarOuter xMiddle (XH + O) XH
select-variant 'dotlessj' 0x237 select-variant 'dotlessj' 0x237
select-variant 'dotlessjBar' 0x25F (follow -- 'dotlessj')
select-variant 'dotlessjBarHookTop' 0x284 (follow -- 'dotlessj/sansSerif')
link-reduced-variant 'dotlessj/sansSerif' 'dotlessj' MathSansSerif link-reduced-variant 'dotlessj/sansSerif' 'dotlessj' MathSansSerif
CreateAccentedComposition 'j' 'j' 'dotlessj' 'dotAboveIJ' CreateAccentedComposition 'j' 'j' 'dotlessj' 'tittleAbove'
CreateAccentedComposition 'j/sansSerif' null 'dotlessj/sansSerif' 'dotAboveIJ' CreateAccentedComposition 'j/sansSerif' null 'dotlessj/sansSerif' 'tittleAbove'
CreateAccentedComposition 'grek/yot' 0x3F3 'dotlessj' 'dotAbove'
CreateAccentedComposition 'cyrl/je' 0x458 'dotlessj' 'dotAbove'
link-reduced-variant 'j/sansSerif' 'j' MathSansSerif link-reduced-variant 'j/sansSerif' 'j' MathSansSerif
select-variant 'dotlessjBar' 0x25F (follow -- 'dotlessj')
select-variant 'dotlessjBarHookTop' 0x284 (follow -- 'dotlessj/sansSerif')
CreateAccentedComposition 'jBar' 0x249 'dotlessjBar' 'tittleAbove'
alias 'grek/yot' 0x3F3 'j'
alias 'cyrl/je' 0x458 'j'
create-glyph 'dotlessjCurlyTail.serifless' : glyph-proc create-glyph 'dotlessjCurlyTail.serifless' : glyph-proc
include : MarkSet.p include : MarkSet.p
set-base-anchor 'above' (Middle + JBalance) XH set-base-anchor 'above' (Middle + JBalance) XH
@ -143,7 +147,7 @@ glyph-block Letter-Latin-Lower-J : begin
include : HSerif.lt (Middle + JBalance) XH LongJut include : HSerif.lt (Middle + JBalance) XH LongJut
select-variant 'dotlessjCurlyTail' select-variant 'dotlessjCurlyTail'
CreateAccentedComposition 'jCurlyTail' 0x29D 'dotlessjCurlyTail' 'dotAbove' CreateAccentedComposition 'jCurlyTail' 0x29D 'dotlessjCurlyTail' 'tittleAbove'
create-glyph 'mathbb/dotlessj' : glyph-proc create-glyph 'mathbb/dotlessj' : glyph-proc
include : MarkSet.p include : MarkSet.p

View file

@ -23,7 +23,7 @@ glyph-block Letter-Shared : begin
currentGlyph.includeMarkWithLeaningSupport gAccent LeaningAnchorMap currentGlyph.includeMarkWithLeaningSupport gAccent LeaningAnchorMap
if (!gr) : begin if (!gr) : begin
if (gnAccents.length === 1 && gnAccents.0 === 'dotAbove') if (gnAccents.length === 1 && gnAccents.0 === 'tittleAbove')
: then : Dotless.set currentGlyph gnBase : then : Dotless.set currentGlyph gnBase
: else : CvDecompose.set currentGlyph { gnSrc :: gnAccents } : else : CvDecompose.set currentGlyph { gnSrc :: gnAccents }

View file

@ -108,7 +108,7 @@ glyph-block Mark-Above : begin
select-variant 'tripleDotAbove' 0x1AB4 (follow -- 'diacriticDot') select-variant 'tripleDotAbove' 0x1AB4 (follow -- 'diacriticDot')
select-variant 'elipsisAbove' 0x20DB (follow -- 'diacriticDot') select-variant 'elipsisAbove' 0x20DB (follow -- 'diacriticDot')
select-variant 'fourDotsAbove' 0x20DC (follow -- 'diacriticDot') select-variant 'fourDotsAbove' 0x20DC (follow -- 'diacriticDot')
select-variant 'dotAboveIJ' (shapeFrom -- "dotAbove") (follow -- 'ijDot') select-variant 'tittleAbove' (shapeFrom -- "dotAbove") (follow -- 'tittle')
glyph-block-export RingDims RingShape glyph-block-export RingDims RingShape
define [RingDims _radiusOut] : begin define [RingDims _radiusOut] : begin

View file

@ -121,7 +121,6 @@ export : define decompOverrides : object
0x246 { 'E' 'longSlash' } 0x246 { 'E' 'longSlash' }
0x247 { 'e' 'shortSlash' } 0x247 { 'e' 'shortSlash' }
0x248 { 'J' 'barOver' } 0x248 { 'J' 'barOver' }
0x249 { 'j' 'barOver' }
0x24D { 'r' 'barOver' } 0x24D { 'r' 'barOver' }
0x24F { 'y' 'hStrike' } 0x24F { 'y' 'hStrike' }

View file

@ -14,6 +14,8 @@ export : define [buildLOCL gsub para glyphStore] : begin
define cyrlMKD : gsub.copyLanguage 'cyrl_MKD ' 'cyrl_DFLT' define cyrlMKD : gsub.copyLanguage 'cyrl_MKD ' 'cyrl_DFLT'
define cyrlBOS : gsub.copyLanguage 'cyrl_BOS ' 'cyrl_DFLT' define cyrlBOS : gsub.copyLanguage 'cyrl_BOS ' 'cyrl_DFLT'
define cyrlBGR : gsub.copyLanguage 'cyrl_BGR ' 'cyrl_DFLT' define cyrlBGR : gsub.copyLanguage 'cyrl_BGR ' 'cyrl_DFLT'
define latnTRK : gsub.copyLanguage 'latn_TRK ' 'latn_DFLT'
define latnAZE : gsub.copyLanguage 'latn_AZE ' 'latn_DFLT'
define latnVIT : gsub.copyLanguage 'latn_VIT ' 'latn_DFLT' define latnVIT : gsub.copyLanguage 'latn_VIT ' 'latn_DFLT'
define grekIPPH : gsub.copyLanguage 'grek_IPPH ' 'grek_DFLT' define grekIPPH : gsub.copyLanguage 'grek_IPPH ' 'grek_DFLT'
define grekAPPH : gsub.copyLanguage 'grek_APPH ' 'grek_DFLT' define grekAPPH : gsub.copyLanguage 'grek_APPH ' 'grek_DFLT'
@ -30,6 +32,15 @@ export : define [buildLOCL gsub para glyphStore] : begin
define loclBGR : cyrlBGR.addFeature : gsub.createFeature 'locl' define loclBGR : cyrlBGR.addFeature : gsub.createFeature 'locl'
loclBGR.addLookup : createGsubLookupFromGr gsub glyphStore LocalizedForm.BGR loclBGR.addLookup : createGsubLookupFromGr gsub glyphStore LocalizedForm.BGR
# TRK
define loclTRK : gsub.createFeature 'locl'
latnTRK.addFeature loclTRK
latnAZE.addFeature loclTRK
loclTRK.addLookup : gsub.createLookup
.type 'gsub_single'
.substitutions : object
'i' : glyphStore.ensureExists 'i.TRK'
# VIT # VIT
define loclVIT : latnVIT.addFeature : gsub.createFeature 'locl' define loclVIT : latnVIT.addFeature : gsub.createFeature 'locl'

View file

@ -6784,21 +6784,21 @@ selector.nine = "straightBar"
[prime.ij-dot] [prime.tittle]
sampler = "ij " sampler = "ij "
hotChars = "ij" hotChars = "ij"
samplerExplain = "Dots in letters “i” and “j” in particular (not including dots in other letters, even if they are similar)" samplerExplain = "Dots in letters “i” and “j” in particular (not including dots in other letters, even if they are similar)"
tagKind = "dot" tagKind = "dot"
[prime.ij-dot.variants.round] [prime.tittle.variants.round]
rank = 1 rank = 1
description = "Dots and Commas in i/j are round" description = "Dots in i/j are round"
selector.ijDot = "round" selector.tittle = "round"
[prime.ij-dot.variants.square] [prime.tittle.variants.square]
rank = 2 rank = 2
description = "Dots and Commas in i/j are square" description = "Dots in i/j are square"
selector.ijDot = "square" selector.tittle = "square"
@ -7750,7 +7750,7 @@ seven = "straight-serifless"
eight = "crossing" eight = "crossing"
nine = "straight-bar" nine = "straight-bar"
# Dots # Dots
ij-dot = "round" tittle = "round"
punctuation-dot = "round" punctuation-dot = "round"
diacritic-dot = "round" diacritic-dot = "round"
# Symbols # Symbols
@ -8062,7 +8062,7 @@ six = "closed-contour"
seven = "bend-serifed" seven = "bend-serifed"
eight = "two-circles" eight = "two-circles"
nine = "closed-contour" nine = "closed-contour"
ij-dot = "square" tittle = "square"
punctuation-dot = "square" punctuation-dot = "square"
diacritic-dot = "square" diacritic-dot = "square"
asterisk = "hex-low" asterisk = "hex-low"
@ -8249,7 +8249,7 @@ four = "closed-serifless"
six = "closed-contour" six = "closed-contour"
eight = "two-circles" eight = "two-circles"
nine = "closed-contour" nine = "closed-contour"
ij-dot = "square" tittle = "square"
punctuation-dot = "square" punctuation-dot = "square"
diacritic-dot = "square" diacritic-dot = "square"
asterisk = "hex-low" asterisk = "hex-low"
@ -8427,7 +8427,7 @@ six = "closed-contour"
seven = "bend-serifless" seven = "bend-serifless"
eight = "two-circles" eight = "two-circles"
nine = "closed-contour" nine = "closed-contour"
ij-dot = "square" tittle = "square"
punctuation-dot = "square" punctuation-dot = "square"
diacritic-dot = "square" diacritic-dot = "square"
brace = "straight" brace = "straight"
@ -8811,6 +8811,7 @@ lower-tau = "flat-tailed"
one = "base-flat-top-serif" one = "base-flat-top-serif"
four = "closed-serifless" four = "closed-serifless"
eight = "two-circles" eight = "two-circles"
tittle = "square"
underscore = "low" underscore = "low"
guillemet = "straight" guillemet = "straight"
dollar = "through-cap" dollar = "through-cap"
@ -9039,7 +9040,7 @@ six = "closed-contour"
seven = "bend-serifless" seven = "bend-serifless"
eight = "crossing-asymmetric" eight = "crossing-asymmetric"
nine = "closed-contour" nine = "closed-contour"
ij-dot = "square" tittle = "square"
punctuation-dot = "square" punctuation-dot = "square"
diacritic-dot = "square" diacritic-dot = "square"
paren = "large-contour" paren = "large-contour"
@ -9449,7 +9450,7 @@ five = "oblique-arched-serifless"
six = "closed-contour" six = "closed-contour"
seven = "straight-serifed" seven = "straight-serifed"
nine = "closed-contour" nine = "closed-contour"
ij-dot = "square" tittle = "square"
punctuation-dot = "square" punctuation-dot = "square"
diacritic-dot = "square" diacritic-dot = "square"
asterisk = "hex-low" asterisk = "hex-low"

View file

@ -4,7 +4,7 @@ import * as themes from "../themes/index.mjs";
const languages = [ const languages = [
{ lang: 'English', sample: 'Shaw, those twelve beige hooks are joined if I patch a young, gooey mouth.' }, { lang: 'English', sample: 'Shaw, those twelve beige hooks are joined if I patch a young, gooey mouth.' },
{ lang: 'IPA', sample: '[ɢʷɯʔ.nas.doːŋ.kʰlja] [ŋan.ȵʑi̯wo.ɕi̯uĕn.ɣwa]', localeId :'en-fonipa' }, { lang: 'IPA', sample: '[ɢʷɯʔ.nas.doːŋ.kʰlja] [ŋan.ȵʑi̯wo.ɕi̯uĕn.ɣwa]', localeId :'en-fonipa' },
{ lang: 'Azerbaijani', sample: 'Zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq.' }, { lang: 'Azerbaijani', sample: 'Zəfər, jaketini də papağını da götür, bu axşam hava çox soyuq olacaq.', localeId :'az' },
{ lang: 'Belarusian', sample: 'У Іўі худы жвавы чорт у зялёнай камізэльцы пабег пад’есці фаршу з юшкай.' }, { lang: 'Belarusian', sample: 'У Іўі худы жвавы чорт у зялёнай камізэльцы пабег пад’есці фаршу з юшкай.' },
{ lang: 'Bulgarian', sample: 'Я, пазачът Вальо уж бди, а скришом хапва кюфтенца зад щайгите.', localeId :'bg' }, { lang: 'Bulgarian', sample: 'Я, пазачът Вальо уж бди, а скришом хапва кюфтенца зад щайгите.', localeId :'bg' },
{ lang: 'Catalan', sample: '«Dóna amor que seràs feliç!». Això, iŀlús company geniüt, ja és un lluït rètol blavís donze kWh.' }, { lang: 'Catalan', sample: '«Dóna amor que seràs feliç!». Això, iŀlús company geniüt, ja és un lluït rètol blavís donze kWh.' },
@ -35,7 +35,7 @@ const languages = [
{ lang: 'Slovak', sample: 'Kŕdeľ šťastných ďatľov učí pri ústí Váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso.' }, { lang: 'Slovak', sample: 'Kŕdeľ šťastných ďatľov učí pri ústí Váhu mĺkveho koňa obhrýzať kôru a žrať čerstvé mäso.' },
{ lang: 'Spanish', sample: 'Benjamín pidió una bebida de kiwi y fresa; Noé, sin vergüenza, la más exquisita champaña del menú.' }, { lang: 'Spanish', sample: 'Benjamín pidió una bebida de kiwi y fresa; Noé, sin vergüenza, la más exquisita champaña del menú.' },
{ lang: 'Swedish', sample: 'Yxmördaren Julia Blomqvist på fäktning i Schweiz.' }, { lang: 'Swedish', sample: 'Yxmördaren Julia Blomqvist på fäktning i Schweiz.' },
{ lang: 'Turkish', sample: 'Pijamalı hasta yağız şoföre çabucak güvendi.' }, { lang: 'Turkish', sample: 'Pijamalı hasta yağız şoföre çabucak güvendi.', localeId :'tr' },
{ lang: 'Ukrainian', sample: 'Чуєш їх, доцю, га? Кумедна ж ти, прощайся без ґольфів!' }, { lang: 'Ukrainian', sample: 'Чуєш їх, доцю, га? Кумедна ж ти, прощайся без ґольфів!' },
{ lang: 'Vietnamese', sample: 'Do bạch kim rất quý nên sẽ dùng để lắp vô xương.', localeId :'vi' }, { lang: 'Vietnamese', sample: 'Do bạch kim rất quý nên sẽ dùng để lắp vô xương.', localeId :'vi' },
{ lang: 'Volapük', sample: 'Ꞝrꞛtom jofazaris hodagudik f binoy ve cꞛl ad xilapel.' }, { lang: 'Volapük', sample: 'Ꞝrꞛtom jofazaris hodagudik f binoy ve cꞛl ad xilapel.' },