From 4f87f98a2596f848eec089f93b1f87216f890d17 Mon Sep 17 00:00:00 2001 From: be5invis Date: Sat, 27 Feb 2016 04:44:31 +0800 Subject: [PATCH] removed overlaps in ligation arrow sticks. --- features/common.fea | 24 +++++++++++-------- glyphs/symbol-other.ptl | 52 +++++++++++++++++++++++++++++++++++------ pass1-cleanup.py | 1 + 3 files changed, 60 insertions(+), 17 deletions(-) diff --git a/features/common.fea b/features/common.fea index dfa7a37..787a2ee 100644 --- a/features/common.fea +++ b/features/common.fea @@ -76,19 +76,23 @@ feature mkmk { } mkmk; # Programming ligations -lookup arrowHyphenSubRight { sub [hyphen equal] by [minus.arrowright equal.arrowright]; } arrowHyphenSubRight; -lookup arrowHyphenSubLeft { sub [hyphen equal] by [minus.arrowleft equal.arrowleft]; } arrowHyphenSubLeft; -lookup arrowHyphenSubMid { sub [hyphen equal] by [minus.arrowmid equal.arrowmid]; } arrowHyphenSubMid; +lookup arrowStickFR { sub [hyphen equal] by [minus.fr equal.fr]; } arrowStickFR; +lookup arrowStickLF { sub [hyphen equal] by [minus.lf equal.lf]; } arrowStickLF; +lookup arrowStickCR { sub [hyphen equal] by [minus.cr equal.cr]; } arrowStickCR; +lookup arrowStickLC { sub [hyphen equal] by [minus.lc equal.lc]; } arrowStickLC; +lookup arrowStickCF { sub [hyphen equal] by [minus.cf equal.cf]; } arrowStickCF; +lookup arrowStickFC { sub [hyphen equal] by [minus.fc equal.fc]; } arrowStickFC; +lookup arrowStickLR { sub [hyphen equal] by [minus.lr equal.lr]; } arrowStickLR; lookup arrowExclamHTMLComment { sub exclam by exclam.htmlcommentstart; } arrowExclamHTMLComment; lookup caltArrow1 { # Arrows, sub - sub less [hyphen equal]' lookup arrowHyphenSubMid [hyphen equal]' lookup arrowHyphenSubMid greater; # <-->, <==> - sub less [hyphen equal]' lookup arrowHyphenSubMid greater; # <->, <=> - sub less [hyphen equal]' lookup arrowHyphenSubLeft [hyphen equal]' lookup arrowHyphenSubLeft; # <--, <== - sub less hyphen' lookup arrowHyphenSubLeft; # <- - sub less exclam' lookup arrowExclamHTMLComment hyphen' lookup arrowHyphenSubLeft hyphen' lookup arrowHyphenSubLeft; # , ==> - sub [hyphen equal]' lookup arrowHyphenSubRight greater; # ->, => + sub less [hyphen equal]' lookup arrowStickLC [hyphen equal]' lookup arrowStickCR greater; # <-->, <==> + sub less [hyphen equal]' lookup arrowStickLR greater; # <->, <=> + sub less [hyphen equal]' lookup arrowStickLC [hyphen equal]' lookup arrowStickCF; # <--, <== + sub less hyphen' lookup arrowStickLF; # <- + sub less exclam' lookup arrowExclamHTMLComment hyphen' lookup arrowStickLC hyphen' lookup arrowStickCF; # , ==> + sub [hyphen equal]' lookup arrowStickFR greater; # ->, => } caltArrow1; feature calt { script latn; diff --git a/glyphs/symbol-other.ptl b/glyphs/symbol-other.ptl index 851c2c0..f9937d3 100644 --- a/glyphs/symbol-other.ptl +++ b/glyphs/symbol-other.ptl @@ -127,22 +127,40 @@ symbol-block 'Metric marks' ### Ligature-orienteds symbol-block 'Ligature-oriented Subglyphs' + # arrows + local cleft (O) + local cright (WIDTH - O) local arrowr [clamp WIDTH (WIDTH * 2) (WIDTH + RIGHTSB - OPERATORSTROKE * 2.5)] local arrowl (WIDTH - arrowr) sketch include : HBar SB arrowr parenMid OPERATORSTROKE - save 'minus.arrowright' + save 'minus.fr' sketch include : HBar arrowl RIGHTSB parenMid OPERATORSTROKE - save 'minus.arrowleft' + save 'minus.lf' + sketch + include : HBar cleft arrowr parenMid OPERATORSTROKE + save 'minus.cr' + sketch + include : HBar arrowl cright parenMid OPERATORSTROKE + save 'minus.lc' + sketch + include : HBar cleft RIGHTSB parenMid OPERATORSTROKE + save 'minus.cf' + sketch + include : HBar SB cright parenMid OPERATORSTROKE + save 'minus.fc' sketch include : HBar arrowl arrowr parenMid OPERATORSTROKE - save 'minus.arrowmid' + save 'minus.lr' + sketch + include : HBar cleft cright parenMid OPERATORSTROKE + save 'minus.cc' sketch include glyphs.exclam include : Translate (((RIGHTSB - WIDTH) + (arrowl + WIDTH)) / 2 - MIDDLE) 0 save 'exclam.htmlcommentstart' - + # => local dblarrowd : XH * [linreg 18 0.125 126 0.25 STROKE] local sw : Math.min OPERATORSTROKE (dblarrowd * [clamp 0.45 0.75 ((1 - WHITENESS) * 1)]) @@ -151,12 +169,32 @@ symbol-block 'Ligature-oriented Subglyphs' sketch include : HBarTop SB dblarrowr (parenMid + dblarrowd) sw include : HBarBottom SB dblarrowr (parenMid - dblarrowd) sw - save 'equal.arrowright' + save 'equal.fr' sketch include : HBarTop dblarrowl RIGHTSB (parenMid + dblarrowd) sw include : HBarBottom dblarrowl RIGHTSB (parenMid - dblarrowd) sw - save 'equal.arrowleft' + save 'equal.lf' + sketch + include : HBarTop cleft dblarrowr (parenMid + dblarrowd) sw + include : HBarBottom cleft dblarrowr (parenMid - dblarrowd) sw + save 'equal.cr' + sketch + include : HBarTop dblarrowl cright (parenMid + dblarrowd) sw + include : HBarBottom dblarrowl cright (parenMid - dblarrowd) sw + save 'equal.lc' + sketch + include : HBarTop cleft RIGHTSB (parenMid + dblarrowd) sw + include : HBarBottom cleft RIGHTSB (parenMid - dblarrowd) sw + save 'equal.cf' + sketch + include : HBarTop SB cright (parenMid + dblarrowd) sw + include : HBarBottom SB cright (parenMid - dblarrowd) sw + save 'equal.fc' sketch include : HBarTop dblarrowl dblarrowr (parenMid + dblarrowd) sw include : HBarBottom dblarrowl dblarrowr (parenMid - dblarrowd) sw - save 'equal.arrowmid' \ No newline at end of file + save 'equal.lr' + sketch + include : HBarTop cleft cright (parenMid + dblarrowd) sw + include : HBarBottom cleft cright (parenMid - dblarrowd) sw + save 'equal.cc' \ No newline at end of file diff --git a/pass1-cleanup.py b/pass1-cleanup.py index 59056de..a276ee0 100644 --- a/pass1-cleanup.py +++ b/pass1-cleanup.py @@ -14,6 +14,7 @@ font.replaceWithReference() font.selection.all() font.selection.select(("less", None), "I.straight", "dotlessi.straight", "l.straight", "ltailBR", "rtailBR") font.selection.select(("less", "ranges", "unicode"), 0x207A, 0x207E, 0x208A, 0x208E) +font.selection.select(("less", "ranges"), "minus.fr", "minus.cc", "equal.fr", "equal.cc") font.replaceWithReference() # Remove overlapped area