parent
debba0d9fb
commit
ff58ccd47e
9 changed files with 49 additions and 32 deletions
|
@ -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`).
|
||||||
|
|
|
@ -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'
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 }
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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' }
|
||||||
|
|
||||||
|
|
|
@ -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'
|
||||||
|
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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 d’onze 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 d’onze 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.' },
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue