* Add Characters

- MODIFIER LETTER YIN DEPARTING TONE MARK (`U+02EA`);
  - MODIFIER LETTER YANG DEPARTING TONE MARK (`U+02EB`);
  - MODIFIER LETTER DOUBLE APOSTROPHE (`U+02EE`);
  - MODIFIER LETTER MIDDLE GRAVE ACCENT (`U+02F4`);
  - MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT (`U+02F5`);
  - MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT (`U+02F6`);
  - MODIFIER LETTER RAISED COLON (`U+02F8`);
  - MODIFIER LETTER BEGIN HIGH TONE (`U+02F9`);
  - MODIFIER LETTER END HIGH TONE (`U+02FA`);
  - MODIFIER LETTER BEGIN LOW TONE (`U+02FB`);
  - MODIFIER LETTER END LOW TONE (`U+02FC`);
  - MODIFIER LETTER SHELF (`U+02FD`);
  - MODIFIER LETTER OPEN SHELF (`U+02FE`);
  - MODIFIER LETTER LOW LEFT ARROW (`U+02FF`);
  - COMBINING LEFT ARROW BELOW (`U+20EE`);
  - COMBINING RIGHT ARROW BELOW (`U+20EF`);
This commit is contained in:
be5invis 2022-03-24 22:46:19 -07:00
parent eabfd4b59e
commit 0c2d989b76
9 changed files with 101 additions and 13 deletions

17
changes/15.1.0.md Normal file
View file

@ -0,0 +1,17 @@
* Add Characters
- MODIFIER LETTER YIN DEPARTING TONE MARK (`U+02EA`);
- MODIFIER LETTER YANG DEPARTING TONE MARK (`U+02EB`);
- MODIFIER LETTER DOUBLE APOSTROPHE (`U+02EE`);
- MODIFIER LETTER MIDDLE GRAVE ACCENT (`U+02F4`);
- MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT (`U+02F5`);
- MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT (`U+02F6`);
- MODIFIER LETTER RAISED COLON (`U+02F8`);
- MODIFIER LETTER BEGIN HIGH TONE (`U+02F9`);
- MODIFIER LETTER END HIGH TONE (`U+02FA`);
- MODIFIER LETTER BEGIN LOW TONE (`U+02FB`);
- MODIFIER LETTER END LOW TONE (`U+02FC`);
- MODIFIER LETTER SHELF (`U+02FD`);
- MODIFIER LETTER OPEN SHELF (`U+02FE`);
- MODIFIER LETTER LOW LEFT ARROW (`U+02FF`);
- COMBINING LEFT ARROW BELOW (`U+20EE`);
- COMBINING RIGHT ARROW BELOW (`U+20EF`);

View file

@ -182,6 +182,23 @@ glyph-block Mark-Below : begin
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkStack
set-base-anchor 'belowBrace' markMiddle belowMarkMid
create-glyph 'shelfBelow' : glyph-proc
set-width 0
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkStack
set-base-anchor 'belowBrace' markMiddle belowMarkMid
include : VBar (SB - Width) belowMarkBot belowMarkTop (markFine * 2)
include : VBar (RightSB - Width) belowMarkBot belowMarkTop (markFine * 2)
include : HBarBottom (SB - Width) (RightSB - Width) belowMarkBot (markFine * 2)
create-glyph 'openShelfBelow' : glyph-proc
set-width 0
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkStack
set-base-anchor 'belowBrace' markMiddle belowMarkMid
include : VBar (SB - Width) belowMarkBot belowMarkTop (markFine * 2)
include : HBarBottom (SB - Width) (RightSB - Width) belowMarkBot (markFine * 2)
# Turned below marks
define [TurnAboveMarkToBelow gnBelowMark unicodeBelowMark gnAboveMark] : begin
derive-glyphs gnBelowMark unicodeBelowMark gnAboveMark : function [src gr] : glyph-proc
@ -230,6 +247,8 @@ glyph-block Mark-Below : begin
TurnAboveMarkToBelow 'sbRsbUnderlineBelow' null 'sbRsbOverlineAbove'
TurnAboveMarkToBelow 'leftHalfCircleBelow' 0x31C 'rightHalfCircleAbove'
TurnAboveMarkToBelow 'rightHalfCircleBelow' 0x339 'leftHalfCircleAbove'
TurnAboveMarkToBelow 'leftArrowBelow' 0x20EE 'rightArrowAbove'
TurnAboveMarkToBelow 'rightArrowBelow' 0x20EF 'leftArrowAbove'
create-glyph 'greaterAndUpArrowheadBelow' 0x0356 : glyph-proc
set-width 0

View file

@ -9,7 +9,7 @@ glyph-block Symbol-Punctuation-Ascii-Marks : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Mark-Shared-Metrics : markExtend
glyph-block-import Mark-Above : aboveMarkTop
glyph-block-import Mark-Above : aboveMarkTop aboveMarkMid
glyph-block-import Symbol-Punctuation-Quotes-And-Primes
define [MarkZoom w] : glyph-proc
@ -48,3 +48,12 @@ glyph-block Symbol-Punctuation-Ascii-Marks : begin
include [refer-glyph 'markBaseSpace'] AS_BASE ALSO_METRICS
include [refer-glyph 'ringAbove']
include : MarkZoom currentGlyph.advanceWidth
do "spacing centered marks"
define shift : ApparentTranslate 0 (SymbolMid - aboveMarkMid)
derive-composites 'mdfMidGrave' 0x2F4 'markBaseSpace' 'graveAbove' shift
derive-composites 'mdfMidDoubleGrave' 0x2F5 'markBaseSpace' 'doubleGraveAbove' shift
derive-composites 'mdfMidDoubleAcute' 0x2F6 'markBaseSpace' 'doubleAcuteAbove' shift
derive-composites 'mdfShelf' 0x2FD 'markBaseSpace' 'shelfBelow'
derive-composites 'mdfOpenShelf' 0x2FE 'markBaseSpace' 'openShelfBelow'

View file

@ -11,6 +11,8 @@ glyph-block Symbol-Other-Phonetic : begin
glyph-block-import Common-Derivatives
local triangleSize : Math.min (PeriodRadius) (XH / 5)
local toneMarkLeft : mix SB RightSB 0.1
local toneMarkRight : Width - toneMarkLeft
create-glyph 'trianglecolon' 0x2D0 : glyph-proc
include : union
@ -31,21 +33,23 @@ glyph-block Symbol-Other-Phonetic : begin
define [yOfTone tone] : mix (OperatorStroke / 2) (CAP - OperatorStroke / 2) (tone / 4)
define [yOfToneNeutral tone] : mix DotRadius (CAP - DotRadius) (tone / 4)
define [yOfToneDepart a b p] : mix (CAP * a + OperatorStroke / 2) (CAP * b - OperatorStroke / 2) p
foreach tone [range 4 downtill 0] : begin
create-glyph ('tone' + tone) (0x2E5 + 4 - tone) : glyph-proc
include : VBarRight [mix SB RightSB 0.9] 0 CAP OperatorStroke
include : HBar [mix SB RightSB 0.1] ([mix SB RightSB 0.9] - 1) [yOfTone tone] OperatorStroke
include : VBarRight toneMarkRight 0 CAP OperatorStroke
include : HBar toneMarkLeft (toneMarkRight - 0.1) [yOfTone tone] OperatorStroke
create-glyph ('toneSandhi' + tone) (0xA712 + 4 - tone) : glyph-proc
include : VBarLeft [mix SB RightSB 0.1] 0 CAP OperatorStroke
include : HBar [mix SB RightSB 0.1] ([mix SB RightSB 0.9] - 1) [yOfTone tone] OperatorStroke
include : VBarLeft toneMarkLeft 0 CAP OperatorStroke
include : HBar (toneMarkLeft + 0.1) toneMarkRight [yOfTone tone] OperatorStroke
create-glyph ('toneNeutral' + tone) (0xA708 + 4 - tone) : glyph-proc
include : VBarRight [mix SB RightSB 0.9] 0 CAP OperatorStroke
include : DotAt ([mix SB RightSB 0.1] + DotRadius) [yOfToneNeutral tone] DotRadius
include : VBarRight toneMarkRight 0 CAP OperatorStroke
include : DotAt (toneMarkLeft + DotRadius) [yOfToneNeutral tone] DotRadius
create-glyph ('toneSandhiNeutral' + tone) (0xA70D + 4 - tone) : glyph-proc
include : VBarLeft [mix SB RightSB 0.1] 0 CAP OperatorStroke
include : DotAt ([mix SB RightSB 0.9] - DotRadius) [yOfToneNeutral tone] DotRadius
include : VBarLeft toneMarkLeft 0 CAP OperatorStroke
include : DotAt (toneMarkRight - DotRadius) [yOfToneNeutral tone] DotRadius
# Connected tones
foreach toneStart [range 4 downtill 0] : foreach toneEnd [range 4 downtill 0] : begin
create-glyph ('toneStart' + toneStart + toneEnd) : glyph-proc
Joining.set currentGlyph Joining.Classes.Right
@ -110,3 +114,22 @@ glyph-block Symbol-Other-Phonetic : begin
create-glyph ('toneSandhiMid' + toneStart + toneMid + toneEnd) : glyph-proc
include [refer-glyph ('toneMid' + toneStart + toneMid + toneEnd)] AS_BASE ALSO_METRICS
Joining.set currentGlyph Joining.Classes.Mid
# Departing tones
local DepartingToneConfig : list
list 'departingToneYin' 0x2EA 0 0.5 0
list 'departingToneYang' 0x2EB 0 0.5 0.5
list 'beginHighTone' 0x2F9 0.6 1 1.0
list 'beginLowTone' 0x2FB 0 0.4 0
foreach { name code a b pos } [items-of DepartingToneConfig] : begin
create-glyph name code : glyph-proc
include : VBarLeft toneMarkLeft (CAP * a) (CAP * b) OperatorStroke
include : HBar (toneMarkLeft + 0.1) toneMarkRight [yOfToneDepart a b pos] OperatorStroke
local EnteringToneConfig : list
list 'endHighTone' 0x2FA 0.6 1 1.0
list 'endLowTone' 0x2FC 0 0.4 0
foreach { name code a b pos } [items-of EnteringToneConfig] : begin
create-glyph name code : glyph-proc
include : VBarRight toneMarkRight (CAP * a) (CAP * b) OperatorStroke
include : HBar toneMarkLeft (toneMarkRight - 0.1) [yOfToneDepart a b pos] OperatorStroke

View file

@ -66,6 +66,7 @@ glyph-block Symbol-Punctuation-Quotes-And-Primes : begin
alias 'mdfTurncomma' 0x2BB 'openSingleQuote'
alias 'mdfApostrophe' 0x2BC 'closeSingleQuote'
alias 'mdfRevComma' 0x2BD 'revSingleQuote'
alias 'mdfDoubleApostrophe' 0x2EE 'closeDoubleQuote'
# Primes
create-glyph 'prime' 0x2032 : glyph-proc

View file

@ -150,6 +150,14 @@ glyph-block Symbol-Punctuation-Small : begin
include : DrawAt df.middle [mix dr (XH - dr) k] (dr - overshoot)
include : DrawAt df.middle [mix dr (XH - dr) (1 - k)] (dr - overshoot)
create-glyph "modifierLetterRaisedColon.\(suffix)" : glyph-proc
local df : DivFrame para.diversityII
set-width df.width
local k 0.9
local dr : DotRadius * kDotRadius
include : DrawAt df.middle (CAP - [mix dr (XH - dr) k]) (dr - overshoot)
include : DrawAt df.middle (CAP - [mix dr (XH - dr) (1 - k)]) (dr - overshoot)
create-glyph "semicolon.\(suffix)" : glyph-proc
include [refer-glyph "comma.\(suffix)"] AS_BASE ALSO_METRICS
include [refer-glyph "xhPeriod.\(suffix)"]
@ -161,6 +169,7 @@ glyph-block Symbol-Punctuation-Small : begin
select-variant 'colon' ':' (follow -- 'punctuationDot')
select-variant 'colon/mid' (follow -- 'punctuationDot')
select-variant 'modifierLetterColon' 0xA789 (follow -- 'punctuationDot')
select-variant 'modifierLetterRaisedColon' 0x2F8 (follow -- 'punctuationDot')
select-variant 'semicolon' ';' (follow -- 'punctuationDot')
select-variant 'invertSemicolon' 0x204F (follow -- 'punctuationDot')
alias 'greekquestion' 0x37E 'semicolon'

View file

@ -140,6 +140,7 @@ export : define decompositionOverrides : object
."\u02F0" "\uE00D\uE004"
."\u02F1" "\uE00D\u0354"
."\u02F2" "\uE00D\u0355"
."\u02FF" "\uE00D\u20EE"
."\u1FED" "\uE00D\u0308\u0300"
."\u1FEE" "\uE00D\u0308\u0301"

View file

@ -0,0 +1,7 @@
const ucdNames = require("@unicode/unicode-14.0.0/Names");
for (let i = 2; i < process.argv.length; i++) {
const lch = parseInt(process.argv[i], 16);
const name = ucdNames.get(lch);
console.log(" -", name, `(\`U+${lch.toString(16).toUpperCase().padStart(4, "0")}\`);`);
}

View file

@ -649,6 +649,7 @@ const PagesFontExport = task.group(`pages:font-export`, async (target, gr) => {
const outDir = Path.resolve(pagesDir, "shared/fonts", gr);
await target.need(GroupWebFonts(gr), de(outDir));
await cp(`${DIST}/${gr}/woff2`, Path.resolve(outDir, "woff2"));
await Delay(500);
await createWebFontCssImpl(target, Path.resolve(outDir, `${gr}.css`), gr, webfontFormatsPages);
await rm(Path.resolve(outDir, "ttf"));
});
@ -660,6 +661,7 @@ const PagesFastFontExport = task.group(`pages:fast-font-export`, async (target,
const outDir = Path.resolve(pagesDir, "shared/fonts", gr);
await target.need(GroupTTFs(gr), de(outDir));
await cp(`${DIST}/${gr}/ttf`, Path.resolve(outDir, "ttf"));
await Delay(500);
await createWebFontCssImpl(target, Path.resolve(outDir, `${gr}.css`), gr, webfontFormatsFast);
await rm(Path.resolve(outDir, "woff2"));
});