1
1
mirror of https://github.com/i-tu/Hasklig.git synced 2024-10-03 21:48:24 +03:00

V1.1: 6 new ligatures, new substitution mechanism, fixed ++/+++

This commit is contained in:
Ian Tuomi 2017-01-22 12:30:34 +02:00 committed by Ian Tuomi
parent 05bf2d86db
commit 1d7b2e8e63
86 changed files with 1193 additions and 598 deletions

View File

@ -1621,3 +1621,9 @@ uniE120 period_period_period
uniE121 plus_plus uniE121 plus_plus
uniE122 plus_plus_plus uniE122 plus_plus_plus
uniE123 slash_equal uniE123 slash_equal
uniE124 colon_colon_colon
uniE125 greater_equal_greater
uniE126 hyphen_greater_greater
uniE127 less_equal_greater
uniE128 less_equal_less
uniE129 less_hyphen_greater

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="LIG" format="1">
<advance width="600"/>
<outline>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.ColorIndex</key>
<integer>6</integer>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 19:55:19 +0000</string>
<key>public.markColor</key>
<string>0,0.67,0.91,1</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="colon_colon_colon" format="1">
<advance width="600"/>
<outline>
<component base="period_period_period"/>
<component base="period_period_period" yOffset="386"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 19:01:27 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -2652,27 +2652,19 @@
<string>bar_greater.glif</string> <string>bar_greater.glif</string>
<key>less_exclam_greater</key> <key>less_exclam_greater</key>
<string>less_exclam_greater.glif</string> <string>less_exclam_greater.glif</string>
<key>CR.00</key> <key>hyphen_greater_greater</key>
<string>cr_00.glif</string> <string>hyphen_greater_greater.glif</string>
<key>CR.01</key> <key>colon_colon_colon</key>
<string>cr_01.glif</string> <string>colon_colon_colon.glif</string>
<key>CR.02</key> <key>greater_equal_greater</key>
<string>cr_02.glif</string> <string>greater_equal_greater.glif</string>
<key>CR.03</key> <key>less_hyphen_greater</key>
<string>cr_03.glif</string> <string>less_hyphen_greater.glif</string>
<key>CR.04</key> <key>less_equal_greater</key>
<string>cr_04.glif</string> <string>less_equal_greater.glif</string>
<key>CR.05</key> <key>less_equal_less</key>
<string>cr_05.glif</string> <string>less_equal_less.glif</string>
<key>CR.06</key> <key>LIG</key>
<string>cr_06.glif</string> <string>L_I_G_.glif</string>
<key>CR.07</key>
<string>cr_07.glif</string>
<key>CR.08</key>
<string>cr_08.glif</string>
<key>CR.09</key>
<string>cr_09.glif</string>
<key>CR.10</key>
<string>cr_10.glif</string>
</dict> </dict>
</plist> </plist>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.00" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.01" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.02" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.03" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.04" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.05" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.06" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.07" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.08" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.09" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.10" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="greater_equal_greater" format="1">
<advance width="600"/>
<outline>
<contour>
<point x="-873" y="416" type="line"/>
<point x="331" y="416" type="line"/>
<point x="331" y="444" type="line"/>
<point x="-873" y="444" type="line"/>
</contour>
<contour>
<point x="-873" y="216" type="line"/>
<point x="331" y="216" type="line"/>
<point x="331" y="244" type="line"/>
<point x="-873" y="244" type="line"/>
</contour>
<contour>
<point x="114" y="62" type="line"/>
<point x="499" y="332" type="line"/>
<point x="114" y="602" type="line"/>
<point x="114" y="566" type="line"/>
<point x="447" y="332" type="line"/>
<point x="114" y="98" type="line"/>
</contour>
<component base="greater" xOffset="-1200"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 18:17:37 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="hyphen_greater_greater" format="1">
<advance width="600"/>
<outline>
<contour>
<point x="-1102" y="316" type="line"/>
<point x="461" y="316" type="line"/>
<point x="461" y="344" type="line"/>
<point x="-1102" y="344" type="line"/>
</contour>
<contour>
<point x="40" y="336" type="line"/>
<point x="-486" y="602" type="line"/>
<point x="-486" y="566" type="line"/>
<point x="-16" y="334" type="line"/>
<point x="-16" y="330" type="line"/>
<point x="-486" y="98" type="line"/>
<point x="-486" y="62" type="line"/>
<point x="40" y="328" type="line"/>
</contour>
<contour>
<point x="-26" y="602" type="line"/>
<point x="-26" y="566" type="line"/>
<point x="444" y="334" type="line"/>
<point x="444" y="330" type="line"/>
<point x="-26" y="98" type="line"/>
<point x="-26" y="62" type="line"/>
<point x="508" y="332" type="line"/>
</contour>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 19:01:27 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="less_equal_greater" format="1">
<advance width="600"/>
<outline>
<component base="equal_greater" xOffset="-600" yOffset="660" xScale="-1" yScale="-1"/>
<component base="equal_greater"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 19:01:21 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="less_equal_less" format="1">
<advance width="600"/>
<outline>
<contour>
<point x="-714" y="58" type="line"/>
<point x="-714" y="94" type="line"/>
<point x="-1047" y="328" type="line"/>
<point x="-714" y="562" type="line"/>
<point x="-714" y="598" type="line"/>
<point x="-1098" y="328" type="line"/>
</contour>
<contour>
<point x="273" y="242" type="line"/>
<point x="-934" y="244" type="line"/>
<point x="-934" y="216" type="line"/>
<point x="273" y="214" type="line"/>
</contour>
<contour>
<point x="267" y="442" type="line"/>
<point x="-931" y="444" type="line"/>
<point x="-934" y="416" type="line"/>
<point x="267" y="414" type="line"/>
</contour>
<component base="less"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 19:01:21 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="less_hyphen_greater" format="1">
<advance width="600"/>
<outline>
<component base="hyphen_greater"/>
<component base="less_hyphen" xOffset="-600"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 19:01:21 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -3932,6 +3932,13 @@
<string>ampersand_ampersand</string> <string>ampersand_ampersand</string>
<string>bar_greater</string> <string>bar_greater</string>
<string>less_exclam_greater</string> <string>less_exclam_greater</string>
<string>hyphen_greater_greater</string>
<string>colon_colon_colon</string>
<string>greater_equal_greater</string>
<string>less_hyphen_greater</string>
<string>less_equal_greater</string>
<string>less_equal_less</string>
<string>LIG</string>
</array> </array>
</dict> </dict>
</plist> </plist>

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="LIG" format="1">
<advance width="600"/>
<outline>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.ColorIndex</key>
<integer>6</integer>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 19:55:11 +0000</string>
<key>public.markColor</key>
<string>0,0.67,0.91,1</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="colon_colon_colon" format="1">
<advance width="600"/>
<outline>
<component base="period_period_period"/>
<component base="period_period_period" yOffset="310"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 19:00:36 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -2652,27 +2652,19 @@
<string>bar_greater.glif</string> <string>bar_greater.glif</string>
<key>less_exclam_greater</key> <key>less_exclam_greater</key>
<string>less_exclam_greater.glif</string> <string>less_exclam_greater.glif</string>
<key>CR.00</key> <key>hyphen_greater_greater</key>
<string>cr_00.glif</string> <string>hyphen_greater_greater.glif</string>
<key>CR.01</key> <key>colon_colon_colon</key>
<string>cr_01.glif</string> <string>colon_colon_colon.glif</string>
<key>CR.02</key> <key>greater_equal_greater</key>
<string>cr_02.glif</string> <string>greater_equal_greater.glif</string>
<key>CR.03</key> <key>less_hyphen_greater</key>
<string>cr_03.glif</string> <string>less_hyphen_greater.glif</string>
<key>CR.04</key> <key>less_equal_greater</key>
<string>cr_04.glif</string> <string>less_equal_greater.glif</string>
<key>CR.05</key> <key>less_equal_less</key>
<string>cr_05.glif</string> <string>less_equal_less.glif</string>
<key>CR.06</key> <key>LIG</key>
<string>cr_06.glif</string> <string>L_I_G_.glif</string>
<key>CR.07</key>
<string>cr_07.glif</string>
<key>CR.08</key>
<string>cr_08.glif</string>
<key>CR.09</key>
<string>cr_09.glif</string>
<key>CR.10</key>
<string>cr_10.glif</string>
</dict> </dict>
</plist> </plist>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.00" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.01" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.02" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.03" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.04" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.05" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.06" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.07" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.08" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.09" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.10" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="greater_equal_greater" format="1">
<advance width="600"/>
<outline>
<contour>
<point x="-947" y="390" type="line"/>
<point x="280" y="390" type="line"/>
<point x="280" y="510" type="line"/>
<point x="-947" y="510" type="line"/>
</contour>
<contour>
<point x="-947" y="153" type="line"/>
<point x="280" y="153" type="line"/>
<point x="280" y="271" type="line"/>
<point x="-947" y="271" type="line"/>
</contour>
<contour>
<point x="94" y="24" type="line"/>
<point x="577" y="332" type="line"/>
<point x="94" y="640" type="line"/>
<point x="94" y="486" type="line"/>
<point x="346" y="330" type="line"/>
<point x="94" y="178" type="line"/>
</contour>
<component base="greater" xOffset="-1200"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 19:45:42 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="hyphen_greater_greater" format="1">
<advance width="600"/>
<outline>
<contour>
<point x="-1136" y="270" type="line"/>
<point x="367" y="270" type="line"/>
<point x="367" y="390" type="line"/>
<point x="-1136" y="390" type="line"/>
</contour>
<contour>
<point x="82" y="347" type="line"/>
<point x="-539" y="640" type="line"/>
<point x="-539" y="486" type="line"/>
<point x="-147" y="334" type="line"/>
<point x="-147" y="330" type="line"/>
<point x="-539" y="178" type="line"/>
<point x="-539" y="24" type="line"/>
<point x="82" y="316" type="line"/>
</contour>
<contour>
<point x="-79" y="640" type="line"/>
<point x="-79" y="516" type="line"/>
<point x="313" y="334" type="line"/>
<point x="313" y="330" type="line"/>
<point x="-79" y="138" type="line"/>
<point x="-79" y="24" type="line"/>
<point x="577" y="332" type="line"/>
</contour>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 19:00:36 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="less_equal_greater" format="1">
<advance width="600"/>
<outline>
<component base="equal_greater" xOffset="-600" yOffset="662" xScale="-1" yScale="-1"/>
<component base="equal_greater"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 19:00:42 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="less_equal_less" format="1">
<advance width="600"/>
<outline>
<contour>
<point x="-694" y="22" type="line"/>
<point x="-694" y="176" type="line"/>
<point x="-946" y="332" type="line"/>
<point x="-694" y="484" type="line"/>
<point x="-694" y="638" type="line"/>
<point x="-1177" y="330" type="line"/>
</contour>
<contour>
<point x="334" y="272" type="line"/>
<point x="-880" y="272" type="line"/>
<point x="-880" y="152" type="line"/>
<point x="334" y="152" type="line"/>
</contour>
<contour>
<point x="334" y="509" type="line"/>
<point x="-880" y="509" type="line"/>
<point x="-880" y="391" type="line"/>
<point x="334" y="391" type="line"/>
</contour>
<component base="less"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 19:00:42 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="less_hyphen_greater" format="1">
<advance width="600"/>
<outline>
<component base="hyphen_greater"/>
<component base="less_hyphen" xOffset="-600"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 19:00:42 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -3,22 +3,22 @@
<advance width="600"/> <advance width="600"/>
<outline> <outline>
<contour> <contour>
<point x="-516" y="270" type="line"/> <point x="-516" y="274" type="line"/>
<point x="-397" y="270" type="line"/> <point x="-397" y="274" type="line"/>
<point x="-397" y="390" type="line"/> <point x="-397" y="386" type="line"/>
<point x="-516" y="390" type="line"/> <point x="-516" y="386" type="line"/>
</contour> </contour>
<contour> <contour>
<point x="365" y="270" type="line"/> <point x="365" y="274" type="line"/>
<point x="516" y="270" type="line"/> <point x="516" y="274" type="line"/>
<point x="516" y="390" type="line"/> <point x="516" y="386" type="line"/>
<point x="365" y="390" type="line"/> <point x="365" y="386" type="line"/>
</contour> </contour>
<contour> <contour>
<point x="-133" y="270" type="line"/> <point x="-133" y="274" type="line"/>
<point x="146" y="270" type="line"/> <point x="146" y="274" type="line"/>
<point x="146" y="390" type="line"/> <point x="146" y="386" type="line"/>
<point x="-133" y="390" type="line"/> <point x="-133" y="386" type="line"/>
</contour> </contour>
<component base="plus" xOffset="-81"/> <component base="plus" xOffset="-81"/>
<component base="plus" xOffset="-519"/> <component base="plus" xOffset="-519"/>

View File

@ -3895,43 +3895,50 @@
<string>uniE0B1</string> <string>uniE0B1</string>
<string>uniE0B2</string> <string>uniE0B2</string>
<string>uniE0B3</string> <string>uniE0B3</string>
<string>greater_hyphen</string> <string>greater_hyphen</string>
<string>greater_greater_hyphen</string> <string>greater_greater_hyphen</string>
<string>greater_greater_greater</string> <string>greater_greater_greater</string>
<string>greater_greater_equal</string> <string>greater_greater_equal</string>
<string>greater_greater</string> <string>greater_greater</string>
<string>period_period</string> <string>period_period</string>
<string>period_period_period</string> <string>period_period_period</string>
<string>plus_plus</string> <string>plus_plus</string>
<string>plus_plus_plus</string> <string>plus_plus_plus</string>
<string>less_plus_greater</string> <string>less_plus_greater</string>
<string>less_less_less</string> <string>less_less_less</string>
<string>less_less</string> <string>less_less</string>
<string>less_hyphen</string> <string>less_hyphen</string>
<string>less_greater</string> <string>less_greater</string>
<string>exclam_exclam</string> <string>exclam_exclam</string>
<string>asterisk_asterisk_asterisk</string> <string>asterisk_asterisk_asterisk</string>
<string>less_dollar_greater</string> <string>less_dollar_greater</string>
<string>equal_less_less</string> <string>equal_less_less</string>
<string>equal_greater</string> <string>equal_greater</string>
<string>equal_equal_greater</string> <string>equal_equal_greater</string>
<string>equal_equal_equal</string> <string>equal_equal_equal</string>
<string>equal_equal</string> <string>equal_equal</string>
<string>less_bar_greater</string> <string>less_bar_greater</string>
<string>less_asterisk_greater</string> <string>less_asterisk_greater</string>
<string>bar_bar</string> <string>bar_bar</string>
<string>less_asterisk</string> <string>less_asterisk</string>
<string>slash_equal</string> <string>slash_equal</string>
<string>hyphen_greater</string> <string>hyphen_greater</string>
<string>hyphen_less</string> <string>hyphen_less</string>
<string>hyphen_less_less</string> <string>hyphen_less_less</string>
<string>colon_colon</string> <string>colon_colon</string>
<string>backslash_backslash</string> <string>backslash_backslash</string>
<string>asterisk_greater</string> <string>asterisk_greater</string>
<string>less_bar</string> <string>less_bar</string>
<string>ampersand_ampersand</string> <string>ampersand_ampersand</string>
<string>bar_greater</string> <string>bar_greater</string>
<string>less_exclam_greater</string> <string>less_exclam_greater</string>
<string>hyphen_greater_greater</string>
<string>colon_colon_colon</string>
<string>greater_equal_greater</string>
<string>less_hyphen_greater</string>
<string>less_equal_greater</string>
<string>less_equal_less</string>
<string>LIG</string>
</array> </array>
</dict> </dict>
</plist> </plist>

View File

@ -12,7 +12,7 @@ Hasklig solves the problem the way typographers have always solved ill-fitting c
Not only can multi-character glyphs be rendered more vividly, other problematic things in monospaced fonts, such as spacing can be corrected. Not only can multi-character glyphs be rendered more vividly, other problematic things in monospaced fonts, such as spacing can be corrected.
[**Download Hasklig Font Family v1.0**](https://github.com/i-tu/Hasklig/files/721295/Hasklig-1.0.zip) [**Download Hasklig Font Family v1.1**](https://github.com/i-tu/Hasklig/files/721295/Hasklig-1.1.zip)
#### Hasklig #### Hasklig
![Hasklig Sample](hasklig_example.png?raw=true) ![Hasklig Sample](hasklig_example.png?raw=true)
@ -21,7 +21,11 @@ Not only can multi-character glyphs be rendered more vividly, other problematic
![Source Code Pro Sample](SourceCodeProSample.png?raw=true) ![Source Code Pro Sample](SourceCodeProSample.png?raw=true)
### Release notes ### Release notes
+ [v1.0]((https://github.com/i-tu/Hasklig/releases/download/1.0/Hasklig-1.0.zip)) + [v1.1](https://github.com/i-tu/Hasklig/releases/tag/1.1)
+ New ligatures `->>`, `:::`, `>=>`, `<=<`, `<=>`, `<->`
+ Switched to newer version of calt code by [Nikita Prokopov](https://github.com/tonsky/FiraCode). It "doesnt apply ligatures to long sequences of chars, e.g. !!!!, >>>>, etc"
+ Fixed `++` and `+++` line inconsistency in heavy italic weights
+ [v1.0](https://github.com/i-tu/Hasklig/releases/tag/1.0)
+ Updates to the latest version of SCP + Updates to the latest version of SCP
+ Hasklig moves to a ligature substitution mechanism borrowed from the excellent [Fira Code by Nikita Prokopov](https://github.com/tonsky/FiraCode) + Hasklig moves to a ligature substitution mechanism borrowed from the excellent [Fira Code by Nikita Prokopov](https://github.com/tonsky/FiraCode)
+ [v0.9]((https://github.com/i-tu/Hasklig/releases/download/0.9/Hasklig-0.9.zip)): This is a major update so YMMV. Please report any issues. + [v0.9]((https://github.com/i-tu/Hasklig/releases/download/0.9/Hasklig-0.9.zip)): This is a major update so YMMV. Please report any issues.

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="LIG" format="1">
<advance width="600"/>
<outline>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.ColorIndex</key>
<integer>6</integer>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 19:54:34 +0000</string>
<key>public.markColor</key>
<string>0,0.67,0.91,1</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="colon_colon_colon" format="1">
<advance width="600"/>
<outline>
<component base="period_period_period"/>
<component base="period_period_period" yOffset="386"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 17:53:56 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -3246,27 +3246,19 @@
<string>bar_greater.glif</string> <string>bar_greater.glif</string>
<key>less_exclam_greater</key> <key>less_exclam_greater</key>
<string>less_exclam_greater.glif</string> <string>less_exclam_greater.glif</string>
<key>CR.00</key> <key>hyphen_greater_greater</key>
<string>cr_00.glif</string> <string>hyphen_greater_greater.glif</string>
<key>CR.01</key> <key>colon_colon_colon</key>
<string>cr_01.glif</string> <string>colon_colon_colon.glif</string>
<key>CR.02</key> <key>greater_equal_greater</key>
<string>cr_02.glif</string> <string>greater_equal_greater.glif</string>
<key>CR.03</key> <key>less_hyphen_greater</key>
<string>cr_03.glif</string> <string>less_hyphen_greater.glif</string>
<key>CR.04</key> <key>less_equal_greater</key>
<string>cr_04.glif</string> <string>less_equal_greater.glif</string>
<key>CR.05</key> <key>less_equal_less</key>
<string>cr_05.glif</string> <string>less_equal_less.glif</string>
<key>CR.06</key> <key>LIG</key>
<string>cr_06.glif</string> <string>L_I_G_.glif</string>
<key>CR.07</key>
<string>cr_07.glif</string>
<key>CR.08</key>
<string>cr_08.glif</string>
<key>CR.09</key>
<string>cr_09.glif</string>
<key>CR.10</key>
<string>cr_10.glif</string>
</dict> </dict>
</plist> </plist>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.00" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.01" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.02" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.03" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.04" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.05" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.06" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.07" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.08" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.09" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.10" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="greater_equal_greater" format="1">
<advance width="600"/>
<outline>
<contour>
<point x="-873" y="416" type="line"/>
<point x="331" y="416" type="line"/>
<point x="331" y="444" type="line"/>
<point x="-873" y="444" type="line"/>
</contour>
<contour>
<point x="-873" y="216" type="line"/>
<point x="331" y="216" type="line"/>
<point x="331" y="244" type="line"/>
<point x="-873" y="244" type="line"/>
</contour>
<contour>
<point x="114" y="62" type="line"/>
<point x="499" y="332" type="line"/>
<point x="114" y="602" type="line"/>
<point x="114" y="566" type="line"/>
<point x="447" y="332" type="line"/>
<point x="114" y="98" type="line"/>
</contour>
<component base="greater" xOffset="-1200"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 18:17:37 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="hyphen_greater_greater" format="1">
<advance width="600"/>
<outline>
<contour>
<point x="-1102" y="316" type="line"/>
<point x="461" y="316" type="line"/>
<point x="461" y="344" type="line"/>
<point x="-1102" y="344" type="line"/>
</contour>
<contour>
<point x="40" y="336" type="line"/>
<point x="-486" y="602" type="line"/>
<point x="-486" y="566" type="line"/>
<point x="-16" y="334" type="line"/>
<point x="-16" y="330" type="line"/>
<point x="-486" y="98" type="line"/>
<point x="-486" y="62" type="line"/>
<point x="40" y="328" type="line"/>
</contour>
<contour>
<point x="-26" y="602" type="line"/>
<point x="-26" y="566" type="line"/>
<point x="444" y="334" type="line"/>
<point x="444" y="330" type="line"/>
<point x="-26" y="98" type="line"/>
<point x="-26" y="62" type="line"/>
<point x="508" y="332" type="line"/>
</contour>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 17:28:43 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="less_equal_greater" format="1">
<advance width="600"/>
<outline>
<component base="equal_greater" xOffset="-600" yOffset="660" xScale="-1" yScale="-1"/>
<component base="equal_greater"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 18:08:10 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="less_equal_less" format="1">
<advance width="600"/>
<outline>
<contour>
<point x="-714" y="58" type="line"/>
<point x="-714" y="94" type="line"/>
<point x="-1047" y="328" type="line"/>
<point x="-714" y="562" type="line"/>
<point x="-714" y="598" type="line"/>
<point x="-1098" y="328" type="line"/>
</contour>
<contour>
<point x="273" y="242" type="line"/>
<point x="-934" y="244" type="line"/>
<point x="-934" y="216" type="line"/>
<point x="273" y="214" type="line"/>
</contour>
<contour>
<point x="267" y="442" type="line"/>
<point x="-931" y="444" type="line"/>
<point x="-934" y="416" type="line"/>
<point x="267" y="414" type="line"/>
</contour>
<component base="less"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 18:16:24 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="less_hyphen_greater" format="1">
<advance width="600"/>
<outline>
<component base="hyphen_greater"/>
<component base="less_hyphen" xOffset="-600"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 18:06:19 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -4823,6 +4823,13 @@
<string>ampersand_ampersand</string> <string>ampersand_ampersand</string>
<string>bar_greater</string> <string>bar_greater</string>
<string>less_exclam_greater</string> <string>less_exclam_greater</string>
<string>hyphen_greater_greater</string>
<string>colon_colon_colon</string>
<string>greater_equal_greater</string>
<string>less_hyphen_greater</string>
<string>less_equal_greater</string>
<string>less_equal_less</string>
<string>LIG</string>
</array> </array>
</dict> </dict>
</plist> </plist>

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="LIG" format="1">
<advance width="600"/>
<outline>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.ColorIndex</key>
<integer>6</integer>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 19:54:48 +0000</string>
<key>public.markColor</key>
<string>0,0.67,0.91,1</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="colon_colon_colon" format="1">
<advance width="600"/>
<outline>
<component base="period_period_period"/>
<component base="period_period_period" yOffset="310"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 17:52:07 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -3246,27 +3246,19 @@
<string>bar_greater.glif</string> <string>bar_greater.glif</string>
<key>less_exclam_greater</key> <key>less_exclam_greater</key>
<string>less_exclam_greater.glif</string> <string>less_exclam_greater.glif</string>
<key>CR.00</key> <key>hyphen_greater_greater</key>
<string>cr_00.glif</string> <string>hyphen_greater_greater.glif</string>
<key>CR.01</key> <key>colon_colon_colon</key>
<string>cr_01.glif</string> <string>colon_colon_colon.glif</string>
<key>CR.02</key> <key>greater_equal_greater</key>
<string>cr_02.glif</string> <string>greater_equal_greater.glif</string>
<key>CR.03</key> <key>less_hyphen_greater</key>
<string>cr_03.glif</string> <string>less_hyphen_greater.glif</string>
<key>CR.04</key> <key>less_equal_greater</key>
<string>cr_04.glif</string> <string>less_equal_greater.glif</string>
<key>CR.05</key> <key>less_equal_less</key>
<string>cr_05.glif</string> <string>less_equal_less.glif</string>
<key>CR.06</key> <key>LIG</key>
<string>cr_06.glif</string> <string>L_I_G_.glif</string>
<key>CR.07</key>
<string>cr_07.glif</string>
<key>CR.08</key>
<string>cr_08.glif</string>
<key>CR.09</key>
<string>cr_09.glif</string>
<key>CR.10</key>
<string>cr_10.glif</string>
</dict> </dict>
</plist> </plist>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.00" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.01" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.02" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.03" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.04" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.05" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.06" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.07" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.08" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.09" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="CR.10" format="1">
<advance width="600"/>
<outline>
</outline>
</glyph>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="greater_equal_greater" format="1">
<advance width="600"/>
<outline>
<contour>
<point x="-947" y="390" type="line"/>
<point x="280" y="390" type="line"/>
<point x="280" y="510" type="line"/>
<point x="-947" y="510" type="line"/>
</contour>
<contour>
<point x="-947" y="153" type="line"/>
<point x="280" y="153" type="line"/>
<point x="280" y="271" type="line"/>
<point x="-947" y="271" type="line"/>
</contour>
<contour>
<point x="94" y="24" type="line"/>
<point x="577" y="332" type="line"/>
<point x="94" y="640" type="line"/>
<point x="94" y="486" type="line"/>
<point x="346" y="330" type="line"/>
<point x="94" y="178" type="line"/>
</contour>
<component base="greater" xOffset="-1200"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 19:45:42 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="hyphen_greater_greater" format="1">
<advance width="600"/>
<outline>
<contour>
<point x="-1136" y="270" type="line"/>
<point x="367" y="270" type="line"/>
<point x="367" y="390" type="line"/>
<point x="-1136" y="390" type="line"/>
</contour>
<contour>
<point x="82" y="347" type="line"/>
<point x="-539" y="640" type="line"/>
<point x="-539" y="486" type="line"/>
<point x="-147" y="334" type="line"/>
<point x="-147" y="330" type="line"/>
<point x="-539" y="178" type="line"/>
<point x="-539" y="24" type="line"/>
<point x="82" y="316" type="line"/>
</contour>
<contour>
<point x="-79" y="640" type="line"/>
<point x="-79" y="516" type="line"/>
<point x="313" y="334" type="line"/>
<point x="313" y="330" type="line"/>
<point x="-79" y="138" type="line"/>
<point x="-79" y="24" type="line"/>
<point x="577" y="332" type="line"/>
</contour>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 17:27:28 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="less_equal_greater" format="1">
<advance width="600"/>
<outline>
<component base="equal_greater" xOffset="-600" yOffset="662" xScale="-1" yScale="-1"/>
<component base="equal_greater"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 18:09:42 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="less_equal_less" format="1">
<advance width="600"/>
<outline>
<contour>
<point x="-694" y="22" type="line"/>
<point x="-694" y="176" type="line"/>
<point x="-946" y="332" type="line"/>
<point x="-694" y="484" type="line"/>
<point x="-694" y="638" type="line"/>
<point x="-1177" y="330" type="line"/>
</contour>
<contour>
<point x="334" y="272" type="line"/>
<point x="-880" y="272" type="line"/>
<point x="-880" y="152" type="line"/>
<point x="334" y="152" type="line"/>
</contour>
<contour>
<point x="334" y="509" type="line"/>
<point x="-880" y="509" type="line"/>
<point x="-880" y="391" type="line"/>
<point x="334" y="391" type="line"/>
</contour>
<component base="less"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 18:24:11 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<glyph name="less_hyphen_greater" format="1">
<advance width="600"/>
<outline>
<component base="hyphen_greater"/>
<component base="less_hyphen" xOffset="-600"/>
</outline>
<lib>
<dict>
<key>com.schriftgestaltung.Glyphs.lastChange</key>
<string>2017-01-21 18:05:10 +0000</string>
</dict>
</lib>
</glyph>

View File

@ -4823,6 +4823,13 @@
<string>ampersand_ampersand</string> <string>ampersand_ampersand</string>
<string>bar_greater</string> <string>bar_greater</string>
<string>less_exclam_greater</string> <string>less_exclam_greater</string>
<string>hyphen_greater_greater</string>
<string>colon_colon_colon</string>
<string>greater_equal_greater</string>
<string>less_hyphen_greater</string>
<string>less_equal_greater</string>
<string>less_equal_less</string>
<string>LIG</string>
</array> </array>
</dict> </dict>
</plist> </plist>

55
all.rtf
View File

@ -1,60 +1,63 @@
{\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf760 {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf760
{\fonttbl\f0\fnil\fcharset0 Hasklig-ExtraLight;\f1\fnil\fcharset0 Hasklig-Regular;\f2\fnil\fcharset0 Hasklig-Light; {\fonttbl\f0\fnil\fcharset0 Hasklig-ExtraLight;\f1\fnil\fcharset0 Hasklig-Regular;\f2\fnil\fcharset0 Hasklig-Light;
\f3\fnil\fcharset0 Hasklig-Medium;\f4\fnil\fcharset0 Hasklig-Semibold;\f5\fnil\fcharset0 Hasklig-Bold; \f3\fnil\fcharset0 Hasklig-Medium;\f4\fnil\fcharset0 Hasklig-Semibold;\f5\fnil\fcharset0 Hasklig-Bold;
\f6\fnil\fcharset0 Hasklig-Black;\f7\fnil\fcharset0 Hasklig-BlackIt;\f8\fnil\fcharset0 Hasklig-LightIt; \f6\fnil\fcharset0 Hasklig-Black;\f7\fnil\fcharset0 Hasklig-BlackIt;\f8\fnil\fcharset0 Hasklig-ExtraLightIt;
\f9\fnil\fcharset0 Hasklig-It;\f10\fnil\fcharset0 Hasklig-SemiboldIt;\f11\fnil\fcharset0 Hasklig-BoldIt; \f9\fnil\fcharset0 Hasklig-It;\f10\fnil\fcharset0 Hasklig-LightIt;\f11\fnil\fcharset0 Hasklig-MediumIt;
} \f12\fnil\fcharset0 Hasklig-SemiboldIt;\f13\fnil\fcharset0 Hasklig-BoldIt;}
{\colortbl;\red255\green255\blue255;} {\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;} {\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww27500\viewh16300\viewkind0 \paperw11900\paperh16840\margl1440\margr1440\vieww22420\viewh16300\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
\f0\fs144 \cf0 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ \f0\fs36 \cf0 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ ::: ->> >=> <-> <=> <=<
\f1 \
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
\f2 \cf0 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ ->> ::: >=> <-> <=> <=<
\f1 \
\
=== ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ ->> ::: >=> <-> <=> <=<\
\
\f3 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ ->> ::: >=> <-> <=> <=<
\f1 \ \f1 \
\ \
\f2 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ \f4\b === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ ->> ::: >=> <-> <=> <=<\
\f1 \
\
=== ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\\
\ \
\f3 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ \f5 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ ->> ::: >=> <-> <=> <=<\
\f1 \
\ \
\f4\b === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\\ \f6 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ ->> ::: >=> <-> <=> <=<\
\
\f5 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\\
\
\f6 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\\
\ \
\f7\i \ \f7\i \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
\f8\b0 \cf0 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ \f8\b0 \cf0 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ ->> ::: >=> <-> <=> <=<
\f9 \ \f9 \
\ \
\f8 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ \f10 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ ->> ::: >=> <-> <=> <=<
\f9 \ \f9 \
\ \
=== ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\\ === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ ->> ::: >=> <-> <=> <=<\
\
=== ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\\
\ \
\f10\b === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\\ \f11 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ ->> ::: >=> <-> <=> <=<
\f9 \
\f12\b \
=== ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ ->> ::: >=> <-> <=> <=<\
\ \
\f11 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\\ \f13 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ ->> ::: >=> <-> <=> <=<\
\ \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
\f7 \cf0 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\\ \f7 \cf0 === ==> =<< >>= >>> >>- -<< <*> <|> <$> <+> <<< ... +++ && || :: == => !! >= >> >- -> -< <* *> <$ <= <> <- << .. ++ /= <| |> \\\\ ->> ::: >=> <-> <=> <=<\
\f6\i0 \ \f6\i0 \
} }

View File

@ -21,23 +21,28 @@
#^:shebang '[ #^:shebang '[
exec java -cp "$HOME/.m2/repository/org/clojure/clojure/1.7.0/clojure-1.7.0.jar" clojure.main "$0" "$@"] exec java -cp "$HOME/.m2/repository/org/clojure/clojure/1.7.0/clojure-1.7.0.jar" clojure.main "$0" "$@"]
(require '[clojure.string :as str]) (require '[clojure.string :as str])
(def ligas (def ligas
[ ["asterisk" "asterisk" "asterisk"] [ ["asterisk" "asterisk" "asterisk"]
;["bar" "bar" "bar"] ;["bar" "bar" "bar"]
["colon" "colon" "colon"]
["equal" "equal" "equal"] ["equal" "equal" "equal"]
["equal" "equal" "greater"] ["equal" "equal" "greater"]
["equal" "less" "less"] ["equal" "less" "less"]
["greater" "greater" "equal"] ["greater" "greater" "equal"]
["greater" "greater" "greater"] ["greater" "greater" "greater"]
["greater" "greater" "hyphen"] ["greater" "greater" "hyphen"]
["hyphen" "greater" "greater"]
["hyphen" "less" "less"] ["hyphen" "less" "less"]
["less" "asterisk" "greater"] ["less" "asterisk" "greater"]
["less" "bar" "greater"] ["less" "bar" "greater"]
["less" "dollar" "greater"] ["less" "dollar" "greater"]
["less" "equal" "greater"]
["less" "equal" "less"]
["less" "hyphen" "greater"]
["less" "plus" "greater"] ["less" "plus" "greater"]
["less" "less" "less"] ["less" "less" "less"]
["period" "period" "period"] ["period" "period" "period"]
@ -50,6 +55,7 @@
["equal" "equal"] ["equal" "equal"]
["equal" "greater"] ["equal" "greater"]
["exclam" "exclam"] ["exclam" "exclam"]
["greater" "equal" "greater"]
["greater" "greater"] ["greater" "greater"]
["greater" "hyphen"] ["greater" "hyphen"]
["hyphen" "greater"] ["hyphen" "greater"]
@ -61,90 +67,69 @@
["less" "less"] ["less" "less"]
["period" "period"] ["period" "period"]
["plus" "plus"] ["plus" "plus"]
["slash" "equal"]]) ["slash" "equal"]])
(defn liga->rules (def ignores
"[f f i] => { [CR CR i] f_f_i { ["slash" "asterisk"]
[CR f i] CR (str
[ f f i] CR }" " ignore sub slash' asterisk slash;\n"
[liga CR] " ignore sub asterisk slash' asterisk;\n")
(case (count liga)
2 (let [[a b] liga]
{ [CR b] (str a "_" b)
[ a b] CR})
3 (let [[a b c] liga]
{ [CR CR c] (str a "_" b "_" c)
[CR b c] CR
[ a b c] CR})
4 (let [[a b c d] liga]
{ [CR CR CR d] (str a "_" b "_" c "_" d)
[CR CR c d] CR
[CR b c d] CR
[ a b c d] CR})))
["asterisk" "slash"]
(str
" ignore sub slash asterisk' slash;\n"
" ignore sub asterisk' slash asterisk;\n")
(defn any? [p & colls] ["asterisk" "asterisk"]
(if colls (str
(let [[coll & cs] colls] " ignore sub slash asterisk' asterisk;\n"
(some #(apply any? (partial p %) cs) coll)) " ignore sub asterisk' asterisk slash;\n")
(p)))
["asterisk" "asterisk" "asterisk"]
(str
" ignore sub slash asterisk' asterisk asterisk;\n"
" ignore sub asterisk' asterisk asterisk slash;\n")
(defn conflicts? [r1 r2] })
(when (.startsWith (first r2) "CR.") ;; we accept that higher-len ligatures can override lower-length
;; but once replacement has started (first glyph in rule is CR.*)
;; there should be no possibility for conflits
(let [l1 (count r1)
l2 (count r2)
prefix1 (subvec r1 0 l2)]
(= r2 prefix1))))
(defn liga->rule
"[f f i] => { [LIG LIG i] f_f_i
[LIG f i] LIG
[ f f i] LIG }"
[liga]
(case (count liga)
2 (let [[a b] liga]
(str/replace
(str " lookup 1_2 {\n"
" ignore sub 1 1' 2;\n"
" ignore sub 1' 2 2;\n"
(get ignores liga)
" sub LIG 2' by 1_2;\n"
" sub 1' 2 by LIG;\n"
" } 1_2;")
#"\d" {"1" a "2" b}))
3 (let [[a b c] liga]
(str/replace
(str " lookup 1_2_3 {\n"
" ignore sub 1 1' 2 3;\n"
" ignore sub 1' 2 3 3;\n"
(get ignores liga)
" sub LIG LIG 3' by 1_2_3;\n"
" sub LIG 2' 3 by LIG;\n"
" sub 1' 2 3 by LIG;\n"
" } 1_2_3;")
#"\d" {"1" a "2" b "3" c}))
4 (let [[a b c d] liga]
(str/replace
(str " lookup 1_2_3_4 {\n"
" ignore sub 1 1' 2 3 4;\n"
" ignore sub 1' 2 3 4 4;\n"
(get ignores liga)
" sub LIG LIG LIG 4' by 1_2_3_4;\n"
" sub LIG LIG 3' 4 by LIG;\n"
" sub LIG 2' 3 4 by LIG;\n"
" sub 1' 2 3 4 by LIG;\n"
" } 1_2_3_4;")
#"\d" {"1" a "2" b "3" c "4" d}))))
(def all-rules (println (->> ligas (sort-by count) (reverse) (map liga->rule) (str/join "\n\n")))
(reduce
(fn [generated liga]
(merge generated
;; looking for smallest i that does not conflict
;; with any of previous rules
(some (fn [i]
(let [CR (str "CR." (String/format "%02d" (to-array [i])))
rs (liga->rules liga CR)]
(when-not (any? conflicts? (keys generated) (keys rs))
rs)))
(range))))
{}
(->> ligas (sort-by count) reverse)))
(defn priority-fn [[from to]]
[;; first compare how many CRs are there (more is better)
(- (count (filter #(re-matches #"CR\.\d+" %) from)))
;; then overal length (more is better)
(- (count from))
;; then alphabetical sort with coercing each vector to the same length
(into from (repeat (- 4 (count from)) "z"))])
(def table (->> all-rules
(sort-by priority-fn)))
(defn rule->str [[from to]]
(loop [res "sub"
seen-non-empty? false
tokens from]
(if-let [token (first tokens)]
(let [class? (.startsWith token "@")
CR? (.startsWith token "CR.")
escaped-token (cond
class? token
CR? (str "\\" token)
seen-non-empty? (str "\\" token)
:else (str "\\" token "'"))]
(recur (str res " " escaped-token) (not CR?) (next tokens)))
(str res " by \\" to ";"))))
(println "feature calt {")
(println " " (->> table (map rule->str) (str/join "\n ")))
(println "} calt;\n")

View File

@ -1,89 +1,311 @@
feature calt { feature calt {
sub \CR.00 \CR.00 \asterisk' by \asterisk_asterisk_asterisk; lookup greater_equal_greater {
sub \CR.00 \CR.00 \equal' by \greater_greater_equal; ignore sub greater greater' equal greater;
sub \CR.00 \CR.00 \greater' by \less_plus_greater; ignore sub greater' equal greater greater;
sub \CR.00 \CR.00 \hyphen' by \greater_greater_hyphen; sub LIG LIG greater' by greater_equal_greater;
sub \CR.00 \CR.00 \less' by \less_less_less; sub LIG equal' greater by LIG;
sub \CR.00 \CR.00 \period' by \period_period_period; sub greater' equal greater by LIG;
sub \CR.00 \CR.00 \plus' by \plus_plus_plus; } greater_equal_greater;
sub \CR.01 \CR.01 \equal' by \equal_equal_equal;
sub \CR.01 \CR.01 \greater' by \less_dollar_greater; lookup plus_plus_plus {
sub \CR.01 \CR.01 \less' by \hyphen_less_less; ignore sub plus plus' plus plus;
sub \CR.02 \CR.02 \greater' by \less_bar_greater; ignore sub plus' plus plus plus;
sub \CR.02 \CR.02 \less' by \equal_less_less; sub LIG LIG plus' by plus_plus_plus;
sub \CR.03 \CR.03 \greater' by \less_asterisk_greater; sub LIG plus' plus by LIG;
sub \CR.04 \CR.04 \greater' by \greater_greater_greater; sub plus' plus plus by LIG;
sub \CR.05 \CR.05 \greater' by \equal_equal_greater; } plus_plus_plus;
sub \CR.00 \asterisk' \asterisk by \CR.00;
sub \CR.00 \greater' \equal by \CR.00; lookup period_period_period {
sub \CR.00 \greater' \hyphen by \CR.00; ignore sub period period' period period;
sub \CR.00 \less' \less by \CR.00; ignore sub period' period period period;
sub \CR.00 \period' \period by \CR.00; sub LIG LIG period' by period_period_period;
sub \CR.00 \plus' \greater by \CR.00; sub LIG period' period by LIG;
sub \CR.00 \plus' \plus by \CR.00; sub period' period period by LIG;
sub \CR.01 \dollar' \greater by \CR.01; } period_period_period;
sub \CR.01 \equal' \equal by \CR.01;
sub \CR.01 \less' \less by \CR.01; lookup less_less_less {
sub \CR.02 \bar' \greater by \CR.02; ignore sub less less' less less;
sub \CR.02 \less' \less by \CR.02; ignore sub less' less less less;
sub \CR.03 \asterisk' \greater by \CR.03; sub LIG LIG less' by less_less_less;
sub \CR.04 \greater' \greater by \CR.04; sub LIG less' less by LIG;
sub \CR.05 \equal' \greater by \CR.05; sub less' less less by LIG;
sub \CR.00 \backslash' by \backslash_backslash; } less_less_less;
sub \CR.00 \bar' by \less_bar;
sub \CR.00 \colon' by \colon_colon; lookup less_plus_greater {
sub \CR.00 \equal' by \slash_equal; ignore sub less less' plus greater;
sub \CR.00 \exclam' by \exclam_exclam; ignore sub less' plus greater greater;
sub \CR.00 \hyphen' by \less_hyphen; sub LIG LIG greater' by less_plus_greater;
sub \CR.01 \asterisk' by \less_asterisk; sub LIG plus' greater by LIG;
sub \CR.01 \bar' by \bar_bar; sub less' plus greater by LIG;
sub \CR.01 \greater' by \less_greater; } less_plus_greater;
sub \CR.01 \hyphen' by \greater_hyphen;
sub \CR.01 \period' by \period_period; lookup less_hyphen_greater {
sub \CR.01 \plus' by \plus_plus; ignore sub less less' hyphen greater;
sub \CR.02 \equal' by \equal_equal; ignore sub less' hyphen greater greater;
sub \CR.02 \greater' by \hyphen_greater; sub LIG LIG greater' by less_hyphen_greater;
sub \CR.03 \greater' by \greater_greater; sub LIG hyphen' greater by LIG;
sub \CR.03 \less' by \less_less; sub less' hyphen greater by LIG;
sub \CR.04 \less' by \hyphen_less; } less_hyphen_greater;
sub \CR.05 \greater' by \equal_greater;
sub \CR.06 \greater' by \bar_greater; lookup less_equal_less {
sub \CR.07 \greater' by \asterisk_greater; ignore sub less less' equal less;
sub \asterisk' \asterisk \asterisk by \CR.00; ignore sub less' equal less less;
sub \equal' \equal \equal by \CR.01; sub LIG LIG less' by less_equal_less;
sub \equal' \equal \greater by \CR.05; sub LIG equal' less by LIG;
sub \equal' \less \less by \CR.02; sub less' equal less by LIG;
sub \greater' \greater \equal by \CR.00; } less_equal_less;
sub \greater' \greater \greater by \CR.04;
sub \greater' \greater \hyphen by \CR.00; lookup less_equal_greater {
sub \hyphen' \less \less by \CR.01; ignore sub less less' equal greater;
sub \less' \asterisk \greater by \CR.03; ignore sub less' equal greater greater;
sub \less' \bar \greater by \CR.02; sub LIG LIG greater' by less_equal_greater;
sub \less' \dollar \greater by \CR.01; sub LIG equal' greater by LIG;
sub \less' \less \less by \CR.00; sub less' equal greater by LIG;
sub \less' \plus \greater by \CR.00; } less_equal_greater;
sub \period' \period \period by \CR.00;
sub \plus' \plus \plus by \CR.00; lookup less_dollar_greater {
sub \asterisk' \greater by \CR.07; ignore sub less less' dollar greater;
sub \backslash' \backslash by \CR.00; ignore sub less' dollar greater greater;
sub \bar' \bar by \CR.01; sub LIG LIG greater' by less_dollar_greater;
sub \bar' \greater by \CR.06; sub LIG dollar' greater by LIG;
sub \colon' \colon by \CR.00; sub less' dollar greater by LIG;
sub \equal' \equal by \CR.02; } less_dollar_greater;
sub \equal' \greater by \CR.05;
sub \exclam' \exclam by \CR.00; lookup less_bar_greater {
sub \greater' \greater by \CR.03; ignore sub less less' bar greater;
sub \greater' \hyphen by \CR.01; ignore sub less' bar greater greater;
sub \hyphen' \greater by \CR.02; sub LIG LIG greater' by less_bar_greater;
sub \hyphen' \less by \CR.04; sub LIG bar' greater by LIG;
sub \less' \asterisk by \CR.01; sub less' bar greater by LIG;
sub \less' \bar by \CR.00; } less_bar_greater;
sub \less' \greater by \CR.01;
sub \less' \hyphen by \CR.00; lookup less_asterisk_greater {
sub \less' \less by \CR.03; ignore sub less less' asterisk greater;
sub \period' \period by \CR.01; ignore sub less' asterisk greater greater;
sub \plus' \plus by \CR.01; sub LIG LIG greater' by less_asterisk_greater;
sub \slash' \equal by \CR.00; sub LIG asterisk' greater by LIG;
sub less' asterisk greater by LIG;
} less_asterisk_greater;
lookup hyphen_less_less {
ignore sub hyphen hyphen' less less;
ignore sub hyphen' less less less;
sub LIG LIG less' by hyphen_less_less;
sub LIG less' less by LIG;
sub hyphen' less less by LIG;
} hyphen_less_less;
lookup hyphen_greater_greater {
ignore sub hyphen hyphen' greater greater;
ignore sub hyphen' greater greater greater;
sub LIG LIG greater' by hyphen_greater_greater;
sub LIG greater' greater by LIG;
sub hyphen' greater greater by LIG;
} hyphen_greater_greater;
lookup greater_greater_hyphen {
ignore sub greater greater' greater hyphen;
ignore sub greater' greater hyphen hyphen;
sub LIG LIG hyphen' by greater_greater_hyphen;
sub LIG greater' hyphen by LIG;
sub greater' greater hyphen by LIG;
} greater_greater_hyphen;
lookup greater_greater_greater {
ignore sub greater greater' greater greater;
ignore sub greater' greater greater greater;
sub LIG LIG greater' by greater_greater_greater;
sub LIG greater' greater by LIG;
sub greater' greater greater by LIG;
} greater_greater_greater;
lookup greater_greater_equal {
ignore sub greater greater' greater equal;
ignore sub greater' greater equal equal;
sub LIG LIG equal' by greater_greater_equal;
sub LIG greater' equal by LIG;
sub greater' greater equal by LIG;
} greater_greater_equal;
lookup equal_less_less {
ignore sub equal equal' less less;
ignore sub equal' less less less;
sub LIG LIG less' by equal_less_less;
sub LIG less' less by LIG;
sub equal' less less by LIG;
} equal_less_less;
lookup equal_equal_greater {
ignore sub equal equal' equal greater;
ignore sub equal' equal greater greater;
sub LIG LIG greater' by equal_equal_greater;
sub LIG equal' greater by LIG;
sub equal' equal greater by LIG;
} equal_equal_greater;
lookup equal_equal_equal {
ignore sub equal equal' equal equal;
ignore sub equal' equal equal equal;
sub LIG LIG equal' by equal_equal_equal;
sub LIG equal' equal by LIG;
sub equal' equal equal by LIG;
} equal_equal_equal;
lookup colon_colon_colon {
ignore sub colon colon' colon colon;
ignore sub colon' colon colon colon;
sub LIG LIG colon' by colon_colon_colon;
sub LIG colon' colon by LIG;
sub colon' colon colon by LIG;
} colon_colon_colon;
lookup asterisk_asterisk_asterisk {
ignore sub asterisk asterisk' asterisk asterisk;
ignore sub asterisk' asterisk asterisk asterisk;
ignore sub slash asterisk' asterisk asterisk;
ignore sub asterisk' asterisk asterisk slash;
sub LIG LIG asterisk' by asterisk_asterisk_asterisk;
sub LIG asterisk' asterisk by LIG;
sub asterisk' asterisk asterisk by LIG;
} asterisk_asterisk_asterisk;
lookup slash_equal {
ignore sub slash slash' equal;
ignore sub slash' equal equal;
sub LIG equal' by slash_equal;
sub slash' equal by LIG;
} slash_equal;
lookup plus_plus {
ignore sub plus plus' plus;
ignore sub plus' plus plus;
sub LIG plus' by plus_plus;
sub plus' plus by LIG;
} plus_plus;
lookup period_period {
ignore sub period period' period;
ignore sub period' period period;
sub LIG period' by period_period;
sub period' period by LIG;
} period_period;
lookup less_less {
ignore sub less less' less;
ignore sub less' less less;
sub LIG less' by less_less;
sub less' less by LIG;
} less_less;
lookup less_hyphen {
ignore sub less less' hyphen;
ignore sub less' hyphen hyphen;
sub LIG hyphen' by less_hyphen;
sub less' hyphen by LIG;
} less_hyphen;
lookup less_bar {
ignore sub less less' bar;
ignore sub less' bar bar;
sub LIG bar' by less_bar;
sub less' bar by LIG;
} less_bar;
lookup less_greater {
ignore sub less less' greater;
ignore sub less' greater greater;
sub LIG greater' by less_greater;
sub less' greater by LIG;
} less_greater;
lookup less_asterisk {
ignore sub less less' asterisk;
ignore sub less' asterisk asterisk;
sub LIG asterisk' by less_asterisk;
sub less' asterisk by LIG;
} less_asterisk;
lookup hyphen_less {
ignore sub hyphen hyphen' less;
ignore sub hyphen' less less;
sub LIG less' by hyphen_less;
sub hyphen' less by LIG;
} hyphen_less;
lookup hyphen_greater {
ignore sub hyphen hyphen' greater;
ignore sub hyphen' greater greater;
sub LIG greater' by hyphen_greater;
sub hyphen' greater by LIG;
} hyphen_greater;
lookup greater_hyphen {
ignore sub greater greater' hyphen;
ignore sub greater' hyphen hyphen;
sub LIG hyphen' by greater_hyphen;
sub greater' hyphen by LIG;
} greater_hyphen;
lookup greater_greater {
ignore sub greater greater' greater;
ignore sub greater' greater greater;
sub LIG greater' by greater_greater;
sub greater' greater by LIG;
} greater_greater;
lookup exclam_exclam {
ignore sub exclam exclam' exclam;
ignore sub exclam' exclam exclam;
sub LIG exclam' by exclam_exclam;
sub exclam' exclam by LIG;
} exclam_exclam;
lookup equal_greater {
ignore sub equal equal' greater;
ignore sub equal' greater greater;
sub LIG greater' by equal_greater;
sub equal' greater by LIG;
} equal_greater;
lookup equal_equal {
ignore sub equal equal' equal;
ignore sub equal' equal equal;
sub LIG equal' by equal_equal;
sub equal' equal by LIG;
} equal_equal;
lookup colon_colon {
ignore sub colon colon' colon;
ignore sub colon' colon colon;
sub LIG colon' by colon_colon;
sub colon' colon by LIG;
} colon_colon;
lookup bar_greater {
ignore sub bar bar' greater;
ignore sub bar' greater greater;
sub LIG greater' by bar_greater;
sub bar' greater by LIG;
} bar_greater;
lookup bar_bar {
ignore sub bar bar' bar;
ignore sub bar' bar bar;
sub LIG bar' by bar_bar;
sub bar' bar by LIG;
} bar_bar;
lookup backslash_backslash {
ignore sub backslash backslash' backslash;
ignore sub backslash' backslash backslash;
sub LIG backslash' by backslash_backslash;
sub backslash' backslash by LIG;
} backslash_backslash;
lookup asterisk_greater {
ignore sub asterisk asterisk' greater;
ignore sub asterisk' greater greater;
sub LIG greater' by asterisk_greater;
sub asterisk' greater by LIG;
} asterisk_greater;
} calt; } calt;