diff --git a/FiraCode.glyphs b/FiraCode.glyphs index 68a7f1c..19d9f14 100644 --- a/FiraCode.glyphs +++ b/FiraCode.glyphs @@ -2,7 +2,7 @@ .appVersion = "1131"; classes = ( { -code = "A Aacute Abreve Acircumflex Adieresis Agrave Amacron Aogonek Aring Atilde AE AEacute B C Cacute Ccaron Ccedilla Ccircumflex Cdotaccent D Eth Dcaron Dcroat E Eacute Ebreve Ecaron Ecircumflex Edieresis Edotaccent Egrave Emacron Eogonek F G Gbreve Gcircumflex Gcommaaccent Gdotaccent H Hbar Hcircumflex I IJ Iacute Ibreve Icircumflex Idieresis Idotaccent Igrave Imacron Iogonek Itilde J Jcircumflex K Kcommaaccent L Lacute Lcaron Lcommaaccent Ldot Lslash M N Nacute Ncaron Ncommaaccent Eng Ntilde O Oacute Obreve Ocircumflex Odieresis Ograve Ohungarumlaut Omacron Oslash Oslashacute Otilde OE P Thorn Q R Racute Rcaron Rcommaaccent S Sacute Scaron Scedilla Scircumflex Scommaaccent Germandbls T Tbar Tcaron Tcedilla Tcommaaccent U Uacute Ubreve Ucircumflex Udieresis Ugrave Uhungarumlaut Umacron Uogonek Uring Utilde V W Wacute Wcircumflex Wdieresis Wgrave X Y Yacute Ycircumflex Ydieresis Ygrave Z Zacute Zcaron Zdotaccent Cacute.loclPLK Nacute.loclPLK Oacute.loclPLK Sacute.loclPLK Zacute.loclPLK a aacute abreve acircumflex adieresis agrave amacron aogonek aring atilde ae aeacute b c cacute ccaron ccedilla ccircumflex cdotaccent d eth dcaron dcroat e eacute ebreve ecaron ecircumflex edieresis edotaccent egrave emacron eogonek f g gbreve gcircumflex gcommaaccent gdotaccent h hbar hcircumflex i dotlessi iacute ibreve icircumflex idieresis idotaccent igrave ij imacron iogonek itilde j dotlessj jcircumflex k kcommaaccent kgreenlandic l lacute lcaron lcommaaccent ldot lslash m n nacute napostrophe ncaron ncommaaccent eng ntilde o oacute obreve ocircumflex odieresis ograve ohungarumlaut omacron oslash oslashacute otilde oe p thorn q r racute rcaron rcommaaccent s sacute scaron scedilla scircumflex scommaaccent germandbls t tbar tcaron tcedilla tcommaaccent u uacute ubreve ucircumflex udieresis ugrave uhungarumlaut umacron uogonek uring utilde v w wacute wcircumflex wdieresis wgrave x y yacute ycircumflex ydieresis ygrave z zacute zcaron zdotaccent cacute.loclPLK nacute.loclPLK oacute.loclPLK sacute.loclPLK zacute.loclPLK x.multiply r.ss01 w_w_w.liga ordfeminine ordmasculine nmod A-cy Be-cy Ve-cy Ge-cy Gje-cy Gheupturn-cy De-cy Ie-cy Iegrave-cy Io-cy Zhe-cy Ze-cy Ii-cy Iishort-cy Iigrave-cy Iishorttail-cy Ka-cy Kje-cy El-cy Em-cy En-cy O-cy Pe-cy Er-cy Es-cy Te-cy U-cy Ushort-cy Ef-cy Ha-cy Che-cy Tse-cy Sha-cy Shcha-cy Dzhe-cy Softsign-cy Hardsign-cy Yeru-cy Lje-cy Nje-cy Dze-cy E-cy Ereversed-cy I-cy Yi-cy Je-cy Tshe-cy Iu-cy Ia-cy Dje-cy Omega-cy Yat-cy Eiotified-cy Yuslittle-cy Yuslittleiotified-cy Yusbig-cy Yusbigiotified-cy Ksi-cy Psi-cy Fita-cy Izhitsa-cy Izhitsadblgrave-cy Uk-cy Ghestroke-cy Ghemiddlehook-cy Zhedescender-cy Zedescender-cy Kadescender-cy Kaverticalstroke-cy Kastroke-cy Kabashkir-cy Endescender-cy Enghe-cy Pemiddlehook-cy Pedescender-cy Haabkhasian-cy Esdescender-cy Tedescender-cy Ustrait-cy Ustraitstroke-cy Hadescender-cy Tetse-cy Chedescender-cy Cheverticalstroke-cy Shha-cy Shhadescender-cy Cheabkhasian-cy Chedescenderabkhasian-cy Palochka-cy Zhebreve-cy Kahook-cy Eltail-cy Enhook-cy Entail-cy Chekhakassian-cy Emtail-cy Abreve-cy Adieresis-cy Aie-cy Iebreve-cy Schwa-cy Schwadieresis-cy Zhedieresis-cy Zedieresis-cy Dzeabkhasian-cy Imacron-cy Idieresis-cy Odieresis-cy Obarred-cy Obarreddieresis-cy Edieresis-cy Umacron-cy Udieresis-cy Uhungarumlaut-cy Chedieresis-cy Gedescender-cy Yerudieresis-cy Gestrokehook-cy Hahook-cy Hastroke-cy Komide-cy Komidje-cy Komizje-cy Komidzje-cy Komilje-cy Kominje-cy Komisje-cy Komitje-cy Reversedze-cy Elhook-cy Lha-cy Rha-cy Yae-cy Qa-cy We-cy Aleutka-cy Elmiddlehook-cy Enmiddlehook-cy Semisoftsign-cy Ertick-cy EnLeftHook-cy Dzzhe-cy Dche-cy Eldescender-cy a-cy be-cy ve-cy ge-cy gje-cy gheupturn-cy de-cy ie-cy iegrave-cy io-cy zhe-cy ze-cy ii-cy iishort-cy iigrave-cy iishorttail-cy ka-cy kje-cy el-cy em-cy en-cy o-cy pe-cy er-cy es-cy te-cy u-cy ushort-cy ef-cy ha-cy che-cy tse-cy sha-cy shcha-cy dzhe-cy softsign-cy hardsign-cy yeru-cy lje-cy nje-cy dze-cy e-cy ereversed-cy i-cy yi-cy je-cy tshe-cy iu-cy ia-cy dje-cy omega-cy yat-cy eiotified-cy yuslittle-cy yuslittleiotified-cy yusbig-cy yusbigiotified-cy ksi-cy psi-cy fita-cy izhitsa-cy izhitsadblgrave-cy uk-cy ghestroke-cy ghemiddlehook-cy zhedescender-cy zedescender-cy kadescender-cy kaverticalstroke-cy kastroke-cy kabashkir-cy endescender-cy enghe-cy pedescender-cy pemiddlehook-cy haabkhasian-cy esdescender-cy tedescender-cy ustrait-cy ustraitstroke-cy hadescender-cy tetse-cy chedescender-cy cheverticalstroke-cy shha-cy shhadescender-cy cheabkhasian-cy chedescenderabkhasian-cy palochka-cy zhebreve-cy kahook-cy eltail-cy enhook-cy entail-cy chekhakassian-cy emtail-cy abreve-cy adieresis-cy aie-cy iebreve-cy schwa-cy schwadieresis-cy zhedieresis-cy zedieresis-cy dzeabkhasian-cy imacron-cy idieresis-cy odieresis-cy obarred-cy obarreddieresis-cy edieresis-cy umacron-cy udieresis-cy uhungarumlaut-cy chedieresis-cy gedescender-cy yerudieresis-cy gestrokehook-cy hahook-cy hastroke-cy komide-cy komidje-cy komizje-cy komidzje-cy komilje-cy kominje-cy komisje-cy komitje-cy reversedze-cy elhook-cy lha-cy rha-cy yae-cy qa-cy we-cy aleutka-cy elmiddlehook-cy enmiddlehook-cy semisoftsign-cy ertick-cy enlefthook-cy dzzhe-cy dche-cy eldescender-cy Yot-greek Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lambda Mu Nu Xi Omicron Pi Rho Sigma Tau Upsilon Phi Chi Psi Omega Alphatonos Epsilontonos Etatonos Iotatonos Omicrontonos Upsilontonos Omegatonos Iotadieresis Upsilondieresis Heta Archaicsampi Pamphyliandigamma KoppaArchaic Stigma Digamma Koppa Sampi KaiSymbol UpsilonhookSymbol UpsilonacutehookSymbol UpsilondieresishookSymbol ThetaSymbol Sho SigmaLunateSymbol San SigmaLunateReversedSymbol SigmaLunateDottedSymbol SigmaLunateDottedReversedSymbol Alphapsili Alphadasia Alphapsilivaria Alphadasiavaria Alphapsilioxia Alphadasiaoxia Alphapsiliperispomeni Alphadasiaperispomeni Alphavaria Alphaoxia Alphavrachy Alphamacron Alphaprosgegrammeni Alphapsiliprosgegrammeni Alphadasiaprosgegrammeni Alphapsilivariaprosgegrammeni Alphadasiavariaprosgegrammeni Alphapsilioxiaprosgegrammeni Alphadasiaoxiaprosgegrammeni Alphapsiliperispomeniprosgegrammeni Alphadasiaperispomeniprosgegrammeni Epsilonpsili Epsilondasia Epsilonpsilivaria Epsilondasiavaria Epsilonpsilioxia Epsilondasiaoxia Epsilonvaria Epsilonoxia Etapsili Etadasia Etapsilivaria Etadasiavaria Etapsilioxia Etadasiaoxia Etapsiliperispomeni Etadasiaperispomeni Etavaria Etaoxia Etaprosgegrammeni Etapsiliprosgegrammeni Etadasiaprosgegrammeni Etapsilivariaprosgegrammeni Etadasiavariaprosgegrammeni Etapsilioxiaprosgegrammeni Etadasiaoxiaprosgegrammeni Etapsiliperispomeniprosgegrammeni Etadasiaperispomeniprosgegrammeni Iotapsili Iotadasia Iotapsilivaria Iotadasiavaria Iotapsilioxia Iotadasiaoxia Iotapsiliperispomeni Iotadasiaperispomeni Iotavaria Iotaoxia Iotavrachy Iotamacron Omicronpsili Omicrondasia Omicronpsilivaria Omicrondasiavaria Omicronpsilioxia Omicrondasiaoxia Omicronvaria Omicronoxia Rhodasia Upsilondasia Upsilondasiavaria Upsilondasiaoxia Upsilondasiaperispomeni Upsilonvaria Upsilonoxia Upsilonvrachy Upsilonmacron Omegapsili Omegadasia Omegapsilivaria Omegadasiavaria Omegapsilioxia Omegadasiaoxia Omegapsiliperispomeni Omegadasiaperispomeni Omegavaria Omegaoxia Omegaprosgegrammeni Omegapsiliprosgegrammeni Omegadasiaprosgegrammeni Omegapsilivariaprosgegrammeni Omegadasiavariaprosgegrammeni Omegapsilioxiaprosgegrammeni Omegadasiaoxiaprosgegrammeni Omegapsiliperispomeniprosgegrammeni Omegadasiaperispomeniprosgegrammeni alpha beta gamma delta epsilon zeta eta theta iota kappa lambda mu nu xi omicron pi rho sigmafinal sigma tau upsilon phi chi psi omega iotatonos iotadieresis iotadieresistonos upsilontonos upsilondieresis upsilondieresistonos omicrontonos omegatonos alphatonos epsilontonos etatonos heta archaicsampi pamphyliandigamma reversedlunatesigmasymbol dottedlunatesigmasymbol reverseddottedlunatesigmasymbol koppaArchaic stigma digamma koppa sampi kaiSymbol betaSymbol thetaSymbol phiSymbol piSymbol kappaSymbol rhoSymbol sigmaLunateSymbol yot epsilonLunateSymbol sho san rhoStrokeSymbol alphapsili alphadasia alphapsilivaria alphadasiavaria alphapsilioxia alphadasiaoxia alphapsiliperispomeni alphadasiaperispomeni alphavaria alphaoxia alphaperispomeni alphavrachy alphamacron alphaypogegrammeni alphavariaypogegrammeni alphaoxiaypogegrammeni alphapsiliypogegrammeni alphadasiaypogegrammeni alphapsilivariaypogegrammeni alphadasiavariaypogegrammeni alphapsilioxiaypogegrammeni alphadasiaoxiaypogegrammeni alphapsiliperispomeniypogegrammeni alphadasiaperispomeniypogegrammeni alphaperispomeniypogegrammeni epsilonpsili epsilondasia epsilonpsilivaria epsilondasiavaria epsilonpsilioxia epsilondasiaoxia epsilonvaria epsilonoxia etapsili etadasia etapsilivaria etadasiavaria etapsilioxia etadasiaoxia etapsiliperispomeni etadasiaperispomeni etavaria etaoxia etaperispomeni etaypogegrammeni etavariaypogegrammeni etaoxiaypogegrammeni etapsiliypogegrammeni etadasiaypogegrammeni etapsilivariaypogegrammeni etadasiavariaypogegrammeni etapsilioxiaypogegrammeni etadasiaoxiaypogegrammeni etapsiliperispomeniypogegrammeni etadasiaperispomeniypogegrammeni etaperispomeniypogegrammeni iotapsili iotadasia iotapsilivaria iotadasiavaria iotapsilioxia iotadasiaoxia iotapsiliperispomeni iotadasiaperispomeni iotavaria iotaoxia iotaperispomeni iotavrachy iotamacron iotadialytikavaria iotadialytikaoxia iotadialytikaperispomeni omicronpsili omicrondasia omicronpsilivaria omicrondasiavaria omicronpsilioxia omicrondasiaoxia omicronvaria omicronoxia rhopsili rhodasia upsilonpsili upsilondasia upsilonpsilivaria upsilondasiavaria upsilonpsilioxia upsilondasiaoxia upsilonpsiliperispomeni upsilondasiaperispomeni upsilonvaria upsilonoxia upsilonperispomeni upsilonvrachy upsilonmacron upsilondialytikavaria upsilondialytikaoxia upsilondialytikaperispomeni omegapsili omegadasia omegapsilivaria omegadasiavaria omegapsilioxia omegadasiaoxia omegapsiliperispomeni omegadasiaperispomeni omegavaria omegaoxia omegaperispomeni omegaypogegrammeni omegavariaypogegrammeni omegaoxiaypogegrammeni omegapsiliypogegrammeni omegadasiaypogegrammeni omegapsilivariaypogegrammeni omegadasiavariaypogegrammeni omegapsilioxiaypogegrammeni omegadasiaoxiaypogegrammeni omegapsiliperispomeniypogegrammeni omegadasiaperispomeniypogegrammeni omegaperispomeniypogegrammeni prosgegrammeni ypogegrammeni zero one two three four five six seven eight nine zero.tosf one.tosf two.tosf three.tosf four.tosf five.tosf six.tosf seven.tosf eight.tosf nine.tosf zero.tosf.zero zero.zero zero.zero.tosf zeroinferior oneinferior twoinferior threeinferior fourinferior fiveinferior sixinferior seveninferior eightinferior nineinferior zero.dnom one.dnom two.dnom three.dnom four.dnom five.dnom six.dnom seven.dnom eight.dnom nine.dnom zero.numr one.numr two.numr three.numr four.numr five.numr six.numr seven.numr eight.numr nine.numr zerosuperior onesuperior twosuperior threesuperior foursuperior fivesuperior sixsuperior sevensuperior eightsuperior ninesuperior fraction onefraction onehalf onethird twothirds onequarter threequarters onefifth twofifths threefifths fourfifths onesixth fivesixths oneeighth threeeighths fiveeighths seveneighths period comma colon semicolon ellipsis exclam exclamdown question questiondown periodcentered bullet asterisk dblverticalbar numbersign slash backslash tironiansignet exclamdown.case questiondown.case asterisk.lc colon.uc parenleftinferior parenrightinferior parenleft parenright braceleft braceright bracketleft bracketright parenleftsuperior parenrightsuperior parenleft.case parenright.case braceleft.case braceright.case bracketleft.case bracketright.case hyphen softhyphen endash emdash afii00208 figuredash underscore underscoredbl hyphen.case softhyphen.case endash.case emdash.case hyphen.lc quotesinglbase quotedblbase quotedblleft quotedblright quoteleft quoteright guillemetleft guillemetright guilsinglleft guilsinglright quotedbl quotesingle guillemetleft.case guillemetright.case guilsinglleft.case guilsinglright.case parenleft.dnom parenright.dnom hyphen_hyphen.liga hyphen_hyphen_hyphen.liga hyphen_hyphen_greater.liga hyphen_bar.liga hyphen_greater.liga hyphen_greater_greater.liga hyphen_less.liga hyphen_less_less.liga hyphen_asciitilde.liga braceleft_bar.liga bracketleft_bar.liga bracketright_numbersign.liga period_hyphen.liga period_period.liga period_period_period.liga period_period_less.liga period_question.liga period_equal.liga colon_colon.liga colon_colon_colon.liga colon_colon_equal.liga colon_equal.liga colon_greater.liga colon_less.liga semicolon_semicolon.liga exclam_exclam.liga exclam_exclam_period.liga exclam_equal.liga exclam_equal_equal.liga question_period.liga question_colon.liga question_question.liga question_equal.liga asterisk_asterisk.liga asterisk_asterisk_asterisk.liga asterisk_greater.liga asterisk_slash.liga numbersign_parenleft.liga numbersign_braceleft.liga numbersign_bracketleft.liga numbersign_colon.liga numbersign_exclam.liga numbersign_question.liga numbersign_numbersign.liga numbersign_numbersign_numbersign.liga numbersign_numbersign_numbersign_numbersign.liga numbersign_equal.liga numbersign_underscore.liga numbersign_underscore_parenleft.liga slash_asterisk.liga slash_equal.liga slash_equal_equal.liga slash_greater.liga slash_slash.liga slash_slash_slash.liga slash_backslash.liga backslash_slash.liga underscore_bar_underscore.liga underscore_underscore.liga numbersign_colon.liga_rem parenleft.numr parenright.numr leftanglebracket-math rightanglebracket-math anoteleia questiongreek CR uniFEFF cent currency dollar drachma euro florin liraTurkish ruble rupeeIndian sterling yen dollar.ss05 assertion because bulletoperator curlybracketextension divisionslash doesnotforce doesnotprove doubleverticalbardoublerightturnstile equalsinferior equalsuperior equivalence forces integralbt integraltp leftcurlybracketlowerhook leftcurlybracketmiddlepiece leftcurlybracketupperhook leftsquarebracketextension leftsquarebracketlowercorner leftsquarebracketuppercorner minusinferior minussuperior models negateddoubleverticalbardoublerightturnstile notidentical nottrue plus minus multiply divide equal notequal greater less greaterequal lessequal plusminus approxequal asciitilde logicalnot asciicircum infinity logicaland logicalor intersection integral increment product summation radical micro partialdiff parenleftextension parenleftlowerhook parenleftupperhook parenrightextension parenrightlowerhook parenrightupperhook percent perthousand plusinferior plussuperior revlogicalnot rightcurlybracketlowerhook rightcurlybracketmiddlepiece rightcurlybracketupperhook rightsquarebracketextension rightsquarebracketlowercorner rightsquarebracketuppercorner righttack tackdown tackleft therefore tripleverticalbarrightturnstile true uptack infinity.case plus.lc arrowup arrowupright arrowright arrowdownright arrowdown arrowdownleft arrowleft arrowupleft arrowboth arrowupdown leftTabArrow rightTabArrow leftHookArrow anticlockwiseGappedCircleArrow clockwiseGappedCircleArrow arrowupwhite arrowrightwhite arrowdownwhite arrowleftwhite downArrowHead upBetweenTwoHorizontalBarsArrowHead upBlackArrow downBlackArrow leftBlackArrow upQuadrupleArrow downQuadrupleArrow rightCircledPlusArrow leftLongArrow rightlongArrow leftRightLongArrow leftLongDoubleArrow rightLongDoubleArrow leftRightLongDoubleArrow leftLongFromBarArrow rightLongFromBarArrow leftLongDoubleFromBarArrow rightLongDoubleFromBarArrow rightLongSquiggleArrow blackRightArrow lowerOneEighthBlock lowerOneQuarterBlock lowerThreeEighthsBlock downBlock lowerFiveEighthsBlock lowerThreeQuartersBlock lowerSevenEighthsBlock fullBlock upBlock upperOneEighthBlock leftOneEighthBlock leftOneQuarterBlock leftThreeEighthsBlock leftBlock leftFiveEighthsBlock leftThreeQuartersBlock leftSevenEighthsBlock rightBlock rightOneEighthBlock quadrantLowerLeft quadrantLowerRight quadrantUpperLeft quadrantUpperLeftAndLowerLeftAndLowerRight quadrantUpperLeftAndLowerRight quadrantUpperLeftAndUpperRightAndLowerLeft quadrantUpperLeftAndUpperRightAndLowerRight quadrantUpperRight quadrantUpperRightAndLowerLeft quadrantUpperRightAndLowerLeftAndLowerRight ltshade shade dkshade blackCircle whiteCircle largeCircle leftHalfBlackWhiteCircle rightHalfBlackWhiteCircle lowerHalfBlackWhiteCircle upperHalfBlackWhiteCircle leftHalfBlackCircle rightHalfBlackCircle upperLeftWhiteCircle upperLeftQuadrantWhiteCircle lowerLeftQuadrantWhiteCircle lowerRightQuadrantWhiteCircle upperRightQuadrantWhiteCircle fisheye bullseye inverseWhiteCircle upperHalfInverseWhiteCircle lowerHalfInverseWhiteCircle upperHalfArc lowerHalfArc upperLeftArc upperRightArc lowerRightArc lowerLeftArc blackDiamond whiteDiamond lozenge blackVerticalRect filledRect whiteRect whiteVerticalRect SF010000 SF020000 SF030000 SF040000 SF050000 SF060000 SF070000 SF080000 SF090000 SF100000 SF110000 SF190000 SF200000 SF210000 SF220000 SF230000 SF240000 SF250000 SF260000 SF270000 SF280000 SF360000 SF370000 SF380000 SF390000 SF400000 SF410000 SF420000 SF430000 SF440000 SF450000 SF460000 SF470000 SF480000 SF490000 SF500000 SF510000 SF520000 SF530000 SF540000 filledbox H22073 whiteSquareWithRoundedCorners squarewhitewithsmallblack H18543 H18551 leftHalfBlackSquare rightHalfBlackSquare upperLeftDiagonalHalfBlackSquare lowerRightDiagonalHalfBlackSquare verticalBisectingLineWhiteSquare whiteSquareWithUpperLeftQuadrant whiteSquareWithLowerLeftQuadrant whiteSquareWithLowerRightQuadrant whiteSquareWithUpperRightQuadrant triagupTriangle rightBlackTriangle triangledown leftBlackTriangle triangleright triaglf blackUpperRightTriangle blackLowerRightTriangle blackLowerLeftTriangle blackUpperLeftTriangle boxDownHeavyAndHorizontalLight boxDownHeavyAndLeftLight boxDownHeavyAndLeftUpLight boxDownHeavyAndRightLight boxDownHeavyAndRightUpLight boxDownHeavyAndUpHorizontalLight boxDownLightAndHorizontalHeavy boxDownLightAndLeftHeavy boxDownLightAndLeftUpHeavy boxDownLightAndRightHeavy boxDownLightAndRightUpHeavy boxDownLightAndUpHorizontalHeavy boxHeavyDoubleDashHorizontal boxHeavyDoubleDashVertical boxHeavyDown boxHeavyDownAndHorizontal boxHeavyDownAndLeft boxHeavyDownAndRight boxHeavyHorizontal boxHeavyLeft boxHeavyLeftAndLightRight boxHeavyQuadrupleDashHorizontal boxHeavyQuadrupleDashVertical boxHeavyRight boxHeavyTripleDashHorizontal boxHeavyTripleDashVertical boxHeavyUp boxHeavyUpAndHorizontal boxHeavyUpAndLeft boxHeavyUpAndLightDown boxHeavyUpAndRight boxHeavyVertical boxHeavyVerticalAndHorizontal boxHeavyVerticalAndLeft boxHeavyVerticalAndRight boxLeftDownHeavyAndRightUpLight boxLeftHeavyAndRightDownLight boxLeftHeavyAndRightUpLight boxLeftHeavyAndRightVerticalLight boxLeftLightAndRightDownHeavy boxLeftLightAndRightUpHeavy boxLeftLightAndRightVerticalHeavy boxLeftUpHeavyAndRightDownLight boxLightDiagonalCross boxLightDiagonalUpperLeftToLowerRight boxLightDiagonalUpperRightToLowerLeft boxLightDoubleDashHorizontal boxLightDoubleDashVertical boxLightDown boxLightLeft boxLightLeftAndHeavyRight boxLightQuadrupleDashHorizontal boxLightQuadrupleDashVertical boxLightRight boxLightTripleDashHorizontal boxLightTripleDashVertical boxLightUp boxLightUpAndHeavyDown boxRightDownHeavyAndLeftUpLight boxRightHeavyAndLeftDownLight boxRightHeavyAndLeftUpLight boxRightHeavyAndLeftVerticalLight boxRightLightAndLeftDownHeavy boxRightLightAndLeftUpHeavy boxRightLightAndLeftVerticalHeavy boxRightUpHeavyAndLeftDownLight boxUpHeavyAndDownHorizontalLight boxUpHeavyAndHorizontalLight boxUpHeavyAndLeftDownLight boxUpHeavyAndLeftLight boxUpHeavyAndRightDownLight boxUpHeavyAndRightLight boxUpLightAndDownHorizontalHeavy boxUpLightAndHorizontalHeavy boxUpLightAndLeftDownHeavy boxUpLightAndLeftHeavy boxUpLightAndRightDownHeavy boxUpLightAndRightHeavy boxVerticalHeavyAndHorizontalLight boxVerticalHeavyAndLeftLight boxVerticalHeavyAndRightLight boxVerticalLightAndHorizontalHeavy boxVerticalLightAndLeftHeavy boxVerticalLightAndRightHeavy uni256D uni256E uni256F uni2570 ballotBox ballotBoxWithCheck ballotBoxWithX skullAndCrossbones whiteFrowningFace smileface invsmileface sun female male spade club heart diamond musicalnote musicalnotedbl checkmark acknowledge-control alternativekeysymbol backspace-control at ampersand paragraph section copyright registered trademark degree diameterSign bar brokenbar literSign dagger daggerdbl estimated numero bell-control blank blankSymbol brokenCircleNorthWestArrow cancel-control carriageReturn-control control dataLinkEscape-control delete-control deleteFormTwo-control deviceControlFour-control deviceControlOne-control deviceControlThree-control deviceControlTwo-control endOfMedium-control endOfText-control endOfTransmission-control endOfTransmissionBlock-control enquiry-control escape-control fileSeparator-control formFeed-control globeWithMeridians groupSeparator-control helmsymbol horizontalTabulation-control house capslock clear deleteLeftKey deleterightKey ejectsymbol keyboard optionKey pagedown pageup propellor returnsymbol lineFeed-control negativeAcknowledge-control newline-control null-control perspective projective recordSeparator-control shiftIn-control shiftOut-control space-control startOfHeading-control startOfText-control substitute-control substituteFormTwo-control synchronousIdle-control threeTurned twoTurned unitSeparator-control verticalTabulation-control ampersand.ss03 at.ss06 plus.dnom minus.dnom equal.dnom ampersand_ampersand.liga bar_hyphen.liga bar_hyphen_greater.liga bar_braceright.liga bar_bracketright.liga bar_bar.liga bar_bar_hyphen.liga bar_bar_bar_greater.liga bar_bar_equal.liga bar_bar_greater.liga bar_equal.liga bar_equal_greater.liga bar_greater.liga dollar_greater.liga plus_plus.liga plus_plus_plus.liga plus_greater.liga equal_colon_equal.liga equal_exclam_equal.liga equal_equal.liga equal_equal_equal.liga equal_equal_greater.liga equal_greater.liga equal_greater_greater.liga equal_less_less.liga equal_slash_equal.liga greater_hyphen.liga greater_hyphen_greater.liga greater_colon.liga greater_equal.liga greater_equal_greater.liga greater_greater.liga greater_greater_hyphen.liga greater_greater_equal.liga greater_greater_greater.liga less_hyphen.liga less_hyphen_hyphen.liga less_hyphen_bar.liga less_hyphen_greater.liga less_hyphen_less.liga less_colon.liga less_exclam_hyphen_hyphen.liga less_asterisk.liga less_asterisk_greater.liga less_bar.liga less_bar_bar.liga less_bar_bar_bar.liga less_bar_greater.liga less_dollar.liga less_dollar_greater.liga less_plus.liga less_plus_greater.liga less_equal.liga less_equal_bar.liga less_equal_equal.liga less_equal_equal_greater.liga less_equal_greater.liga less_equal_less.liga less_greater.liga less_less.liga less_less_hyphen.liga less_less_equal.liga less_less_less.liga less_asciitilde.liga less_asciitilde_greater.liga less_asciitilde_asciitilde.liga less_slash.liga less_slash_greater.liga asciitilde_hyphen.liga asciitilde_at.liga asciitilde_equal.liga asciitilde_greater.liga asciitilde_asciitilde.liga asciitilde_asciitilde_greater.liga asciicircum_equal.liga percent_percent.liga plus.numr minus.numr equal.numr greater_equal.ss02 less_equal.ss02 epsilonLunateReversedSymbol numeral-greek lowernumeral-greek apostrophemod doubleprimemod firsttonechinese primemod dieresiscomb dotaccentcomb gravecomb acutecomb hungarumlautcomb circumflexcomb caroncomb brevecomb ringcomb tildecomb macroncomb overlinecomb dblgravecomb commaabovecomb commareversedabovecomb commaaccent cedillacomb strokeshortoverlay strokelongoverlay acute breve caron cedilla circumflex dieresis dotaccent grave hungarumlaut macron ogonek ring tilde caron.alt commaaccent.case acute.case breve.case caron.case cedilla.case circumflex.case dieresis.case dotaccent.case grave.case hungarumlaut.case macron.case ring.case tilde.case acute.loclPLK acute.case.loclPLK perispomenicomb ypogegrammenicomb tonos tonos.case dieresistonos psili koronis dasia psilivaria dasiavaria psilioxia dasiaoxia psiliperispomeni dasiaperispomeni dialytikavaria dialytikaoxia dialytikaperispomeni varia varia.case oxia oxia.case perispomeni canadiansyllabicso canadiansyllabicsa uniE000 uniE001 uniE002 uniE003 uniE0A0 uniE0A1 uniE0A2 uniE0B0 uniE0B1 uniE0B2 uniE0B3 LIG breve-cy breve-cy.case null"; +code = "A A-cy AE AEacute Aacute Abreve Abreve-cy Acircumflex Adieresis Adieresis-cy Agrave Aie-cy Aleutka-cy Alpha Alphadasia Alphadasiaoxia Alphadasiaoxiaprosgegrammeni Alphadasiaperispomeni Alphadasiaperispomeniprosgegrammeni Alphadasiaprosgegrammeni Alphadasiavaria Alphadasiavariaprosgegrammeni Alphamacron Alphaoxia Alphaprosgegrammeni Alphapsili Alphapsilioxia Alphapsilioxiaprosgegrammeni Alphapsiliperispomeni Alphapsiliperispomeniprosgegrammeni Alphapsiliprosgegrammeni Alphapsilivaria Alphapsilivariaprosgegrammeni Alphatonos Alphavaria Alphavrachy Amacron Aogonek Archaicsampi Aring Atilde B Be-cy Beta C CR Cacute Cacute.loclPLK Ccaron Ccedilla Ccircumflex Cdotaccent Che-cy Cheabkhasian-cy Chedescender-cy Chedescenderabkhasian-cy Chedieresis-cy Chekhakassian-cy Cheverticalstroke-cy Chi D Dcaron Dche-cy Dcroat De-cy Delta Digamma Dje-cy Dze-cy Dzeabkhasian-cy Dzhe-cy Dzzhe-cy E E-cy Eacute Ebreve Ecaron Ecircumflex Edieresis Edieresis-cy Edotaccent Ef-cy Egrave Eiotified-cy El-cy Eldescender-cy Elhook-cy Elmiddlehook-cy Eltail-cy Em-cy Emacron Emtail-cy En-cy EnLeftHook-cy Endescender-cy Eng Enghe-cy Enhook-cy Enmiddlehook-cy Entail-cy Eogonek Epsilon Epsilondasia Epsilondasiaoxia Epsilondasiavaria Epsilonoxia Epsilonpsili Epsilonpsilioxia Epsilonpsilivaria Epsilontonos Epsilonvaria Er-cy Ereversed-cy Ertick-cy Es-cy Esdescender-cy Eta Etadasia Etadasiaoxia Etadasiaoxiaprosgegrammeni Etadasiaperispomeni Etadasiaperispomeniprosgegrammeni Etadasiaprosgegrammeni Etadasiavaria Etadasiavariaprosgegrammeni Etaoxia Etaprosgegrammeni Etapsili Etapsilioxia Etapsilioxiaprosgegrammeni Etapsiliperispomeni Etapsiliperispomeniprosgegrammeni Etapsiliprosgegrammeni Etapsilivaria Etapsilivariaprosgegrammeni Etatonos Etavaria Eth F F.spacer F_l.liga Fita-cy G Gamma Gbreve Gcircumflex Gcommaaccent Gdotaccent Ge-cy Gedescender-cy Germandbls Gestrokehook-cy Ghemiddlehook-cy Ghestroke-cy Gheupturn-cy Gje-cy H H18543 H18551 H22073 Ha-cy Haabkhasian-cy Hadescender-cy Hahook-cy Hardsign-cy Hastroke-cy Hbar Hcircumflex Heta I I-cy IJ Ia-cy Iacute Ibreve Icircumflex Idieresis Idieresis-cy Idotaccent Ie-cy Iebreve-cy Iegrave-cy Igrave Ii-cy Iigrave-cy Iishort-cy Iishorttail-cy Imacron Imacron-cy Io-cy Iogonek Iota Iotadasia Iotadasiaoxia Iotadasiaperispomeni Iotadasiavaria Iotadieresis Iotamacron Iotaoxia Iotapsili Iotapsilioxia Iotapsiliperispomeni Iotapsilivaria Iotatonos Iotavaria Iotavrachy Itilde Iu-cy Izhitsa-cy Izhitsadblgrave-cy J Jcircumflex Je-cy K Ka-cy Kabashkir-cy Kadescender-cy Kahook-cy KaiSymbol Kappa Kastroke-cy Kaverticalstroke-cy Kcommaaccent Kje-cy Komide-cy Komidje-cy Komidzje-cy Komilje-cy Kominje-cy Komisje-cy Komitje-cy Komizje-cy Koppa KoppaArchaic Ksi-cy L Lacute Lambda Lcaron Lcommaaccent Ldot Lha-cy Lje-cy Lslash M Mu N Nacute Nacute.loclPLK Ncaron Ncommaaccent Nje-cy Ntilde Nu O O-cy OE Oacute Oacute.loclPLK Obarred-cy Obarreddieresis-cy Obreve Ocircumflex Odieresis Odieresis-cy Ograve Ohungarumlaut Omacron Omega Omega-cy Omegadasia Omegadasiaoxia Omegadasiaoxiaprosgegrammeni Omegadasiaperispomeni Omegadasiaperispomeniprosgegrammeni Omegadasiaprosgegrammeni Omegadasiavaria Omegadasiavariaprosgegrammeni Omegaoxia Omegaprosgegrammeni Omegapsili Omegapsilioxia Omegapsilioxiaprosgegrammeni Omegapsiliperispomeni Omegapsiliperispomeniprosgegrammeni Omegapsiliprosgegrammeni Omegapsilivaria Omegapsilivariaprosgegrammeni Omegatonos Omegavaria Omicron Omicrondasia Omicrondasiaoxia Omicrondasiavaria Omicronoxia Omicronpsili Omicronpsilioxia Omicronpsilivaria Omicrontonos Omicronvaria Oslash Oslashacute Otilde P Palochka-cy Pamphyliandigamma Pe-cy Pedescender-cy Pemiddlehook-cy Phi Pi Psi Psi-cy Q Qa-cy R Racute Rcaron Rcommaaccent Reversedze-cy Rha-cy Rho Rhodasia S SF010000 SF020000 SF030000 SF040000 SF050000 SF060000 SF070000 SF080000 SF090000 SF100000 SF110000 SF190000 SF200000 SF210000 SF220000 SF230000 SF240000 SF250000 SF260000 SF270000 SF280000 SF360000 SF370000 SF380000 SF390000 SF400000 SF410000 SF420000 SF430000 SF440000 SF450000 SF460000 SF470000 SF480000 SF490000 SF500000 SF510000 SF520000 SF530000 SF540000 Sacute Sacute.loclPLK Sampi San Scaron Scedilla Schwa-cy Schwadieresis-cy Scircumflex Scommaaccent Semisoftsign-cy Sha-cy Shcha-cy Shha-cy Shhadescender-cy Sho Sigma SigmaLunateDottedReversedSymbol SigmaLunateDottedSymbol SigmaLunateReversedSymbol SigmaLunateSymbol Softsign-cy Stigma T T.spacer T_l.liga Tau Tbar Tcaron Tcedilla Tcommaaccent Te-cy Tedescender-cy Tetse-cy Theta ThetaSymbol Thorn Tse-cy Tshe-cy U U-cy Uacute Ubreve Ucircumflex Udieresis Udieresis-cy Ugrave Uhungarumlaut Uhungarumlaut-cy Uk-cy Umacron Umacron-cy Uogonek Upsilon UpsilonacutehookSymbol Upsilondasia Upsilondasiaoxia Upsilondasiaperispomeni Upsilondasiavaria Upsilondieresis UpsilondieresishookSymbol UpsilonhookSymbol Upsilonmacron Upsilonoxia Upsilontonos Upsilonvaria Upsilonvrachy Uring Ushort-cy Ustrait-cy Ustraitstroke-cy Utilde V Ve-cy W Wacute Wcircumflex Wdieresis We-cy Wgrave X Xi Y Yacute Yae-cy Yat-cy Ycircumflex Ydieresis Yeru-cy Yerudieresis-cy Ygrave Yi-cy Yot-greek Yusbig-cy Yusbigiotified-cy Yuslittle-cy Yuslittleiotified-cy Z Zacute Zacute.loclPLK Zcaron Zdotaccent Ze-cy Zedescender-cy Zedieresis-cy Zeta Zhe-cy Zhebreve-cy Zhedescender-cy Zhedieresis-cy a a-cy aacute abreve abreve-cy acircumflex acknowledge-control acute acute.case acute.case.loclPLK acute.loclPLK acutecomb adieresis adieresis-cy ae aeacute afii00208 agrave aie-cy aleutka-cy alpha alphadasia alphadasiaoxia alphadasiaoxiaypogegrammeni alphadasiaperispomeni alphadasiaperispomeniypogegrammeni alphadasiavaria alphadasiavariaypogegrammeni alphadasiaypogegrammeni alphamacron alphaoxia alphaoxiaypogegrammeni alphaperispomeni alphaperispomeniypogegrammeni alphapsili alphapsilioxia alphapsilioxiaypogegrammeni alphapsiliperispomeni alphapsiliperispomeniypogegrammeni alphapsilivaria alphapsilivariaypogegrammeni alphapsiliypogegrammeni alphatonos alphavaria alphavariaypogegrammeni alphavrachy alphaypogegrammeni alternativekeysymbol amacron ampersand ampersand.spacer ampersand.ss03 ampersand_ampersand.liga anoteleia anticlockwiseGappedCircleArrow aogonek apostrophemod approxequal archaicsampi aring arrowboth arrowdown arrowdownleft arrowdownright arrowdownwhite arrowleft arrowleftwhite arrowright arrowrightwhite arrowup arrowupdown arrowupleft arrowupright arrowupwhite asciicircum asciicircum.spacer asciicircum_equal.liga asciitilde asciitilde.spacer asciitilde_asciitilde.liga asciitilde_asciitilde_greater.liga asciitilde_at.liga asciitilde_equal.liga asciitilde_greater.liga asciitilde_hyphen.liga assertion asterisk asterisk.lc asterisk.spacer asterisk_asterisk.liga asterisk_asterisk_asterisk.liga asterisk_greater.liga asterisk_slash.liga at at.spacer at.ss06 atilde b backslash backslash.spacer backslash.ss08 backslash.thick.ss08 backslash_slash.liga backspace-control ballotBox ballotBoxWithCheck ballotBoxWithX bar bar.spacer bar_bar.liga bar_bar_bar_greater.liga bar_bar_equal.liga bar_bar_greater.liga bar_bar_hyphen.liga bar_braceright.liga bar_bracketright.liga bar_equal.liga bar_equal_greater.liga bar_greater.liga bar_hyphen.liga bar_hyphen_greater.liga be-cy because bell-control beta betaSymbol blackCircle blackDiamond blackLowerLeftTriangle blackLowerRightTriangle blackRightArrow blackUpperLeftTriangle blackUpperRightTriangle blackVerticalRect blank blankSymbol boxDownHeavyAndHorizontalLight boxDownHeavyAndLeftLight boxDownHeavyAndLeftUpLight boxDownHeavyAndRightLight boxDownHeavyAndRightUpLight boxDownHeavyAndUpHorizontalLight boxDownLightAndHorizontalHeavy boxDownLightAndLeftHeavy boxDownLightAndLeftUpHeavy boxDownLightAndRightHeavy boxDownLightAndRightUpHeavy boxDownLightAndUpHorizontalHeavy boxHeavyDoubleDashHorizontal boxHeavyDoubleDashVertical boxHeavyDown boxHeavyDownAndHorizontal boxHeavyDownAndLeft boxHeavyDownAndRight boxHeavyHorizontal boxHeavyLeft boxHeavyLeftAndLightRight boxHeavyQuadrupleDashHorizontal boxHeavyQuadrupleDashVertical boxHeavyRight boxHeavyTripleDashHorizontal boxHeavyTripleDashVertical boxHeavyUp boxHeavyUpAndHorizontal boxHeavyUpAndLeft boxHeavyUpAndLightDown boxHeavyUpAndRight boxHeavyVertical boxHeavyVerticalAndHorizontal boxHeavyVerticalAndLeft boxHeavyVerticalAndRight boxLeftDownHeavyAndRightUpLight boxLeftHeavyAndRightDownLight boxLeftHeavyAndRightUpLight boxLeftHeavyAndRightVerticalLight boxLeftLightAndRightDownHeavy boxLeftLightAndRightUpHeavy boxLeftLightAndRightVerticalHeavy boxLeftUpHeavyAndRightDownLight boxLightDiagonalCross boxLightDiagonalUpperLeftToLowerRight boxLightDiagonalUpperRightToLowerLeft boxLightDoubleDashHorizontal boxLightDoubleDashVertical boxLightDown boxLightLeft boxLightLeftAndHeavyRight boxLightQuadrupleDashHorizontal boxLightQuadrupleDashVertical boxLightRight boxLightTripleDashHorizontal boxLightTripleDashVertical boxLightUp boxLightUpAndHeavyDown boxRightDownHeavyAndLeftUpLight boxRightHeavyAndLeftDownLight boxRightHeavyAndLeftUpLight boxRightHeavyAndLeftVerticalLight boxRightLightAndLeftDownHeavy boxRightLightAndLeftUpHeavy boxRightLightAndLeftVerticalHeavy boxRightUpHeavyAndLeftDownLight boxUpHeavyAndDownHorizontalLight boxUpHeavyAndHorizontalLight boxUpHeavyAndLeftDownLight boxUpHeavyAndLeftLight boxUpHeavyAndRightDownLight boxUpHeavyAndRightLight boxUpLightAndDownHorizontalHeavy boxUpLightAndHorizontalHeavy boxUpLightAndLeftDownHeavy boxUpLightAndLeftHeavy boxUpLightAndRightDownHeavy boxUpLightAndRightHeavy boxVerticalHeavyAndHorizontalLight boxVerticalHeavyAndLeftLight boxVerticalHeavyAndRightLight boxVerticalLightAndHorizontalHeavy boxVerticalLightAndLeftHeavy boxVerticalLightAndRightHeavy braceleft braceleft.case braceleft.spacer braceleft_bar.liga braceright braceright.case braceright.spacer bracketleft bracketleft.case bracketleft.spacer bracketleft_bar.liga bracketright bracketright.case bracketright.spacer bracketright_numbersign.liga breve breve-cy breve-cy.case breve.case brevecomb brokenCircleNorthWestArrow brokenbar bullet bulletoperator bullseye c cacute cacute.loclPLK canadiansyllabicsa canadiansyllabicso cancel-control capslock caron caron.alt caron.case caroncomb carriageReturn-control ccaron ccedilla ccircumflex cdotaccent cedilla cedilla.case cedillacomb cent che-cy cheabkhasian-cy checkmark chedescender-cy chedescenderabkhasian-cy chedieresis-cy chekhakassian-cy cheverticalstroke-cy chi circumflex circumflex.case circumflexcomb clear clockwiseGappedCircleArrow club colon colon.spacer colon.uc colon_colon.liga colon_colon_colon.liga colon_colon_equal.liga colon_equal.liga colon_greater.liga colon_less.liga comma commaabovecomb commaaccent commaaccent.case commareversedabovecomb control copyright curlybracketextension currency d dagger daggerdbl dasia dasiaoxia dasiaperispomeni dasiavaria dataLinkEscape-control dblgravecomb dblverticalbar dcaron dche-cy dcroat de-cy degree delete-control deleteFormTwo-control deleteLeftKey deleterightKey delta deviceControlFour-control deviceControlOne-control deviceControlThree-control deviceControlTwo-control dialytikaoxia dialytikaperispomeni dialytikavaria diameterSign diamond dieresis dieresis.case dieresiscomb dieresistonos digamma divide divisionslash dje-cy dkshade doesnotforce doesnotprove dollar dollar.spacer dollar.ss05 dollar_greater.liga dotaccent dotaccent.case dotaccentcomb dotlessi dotlessj dottedlunatesigmasymbol doubleprimemod doubleverticalbardoublerightturnstile downArrowHead downBlackArrow downBlock downQuadrupleArrow drachma dze-cy dzeabkhasian-cy dzhe-cy dzzhe-cy e e-cy eacute ebreve ecaron ecircumflex edieresis edieresis-cy edotaccent ef-cy egrave eight eight.dnom eight.numr eight.tosf eightinferior eightsuperior eiotified-cy ejectsymbol el-cy eldescender-cy elhook-cy ellipsis elmiddlehook-cy eltail-cy em-cy emacron emdash emdash.case emtail-cy en-cy endOfMedium-control endOfText-control endOfTransmission-control endOfTransmissionBlock-control endash endash.case endescender-cy eng enghe-cy enhook-cy enlefthook-cy enmiddlehook-cy enquiry-control entail-cy eogonek epsilon epsilonLunateReversedSymbol epsilonLunateSymbol epsilondasia epsilondasiaoxia epsilondasiavaria epsilonoxia epsilonpsili epsilonpsilioxia epsilonpsilivaria epsilontonos epsilonvaria equal equal.dnom equal.numr equal.spacer equal_colon_equal.liga equal_equal.liga equal_equal_equal.liga equal_equal_greater.liga equal_exclam_equal.liga equal_greater.liga equal_greater_greater.liga equal_less_less.liga equal_slash_equal.liga equalsinferior equalsuperior equivalence er-cy ereversed-cy ertick-cy es-cy escape-control esdescender-cy estimated eta etadasia etadasiaoxia etadasiaoxiaypogegrammeni etadasiaperispomeni etadasiaperispomeniypogegrammeni etadasiavaria etadasiavariaypogegrammeni etadasiaypogegrammeni etaoxia etaoxiaypogegrammeni etaperispomeni etaperispomeniypogegrammeni etapsili etapsilioxia etapsilioxiaypogegrammeni etapsiliperispomeni etapsiliperispomeniypogegrammeni etapsilivaria etapsilivariaypogegrammeni etapsiliypogegrammeni etatonos etavaria etavariaypogegrammeni etaypogegrammeni eth euro exclam exclam.spacer exclam_equal.liga exclam_equal_equal.liga exclam_exclam.liga exclam_exclam_period.liga exclamdown exclamdown.case f f.spacer f_l.liga female figuredash fileSeparator-control filledRect filledbox firsttonechinese fisheye fita-cy five five.dnom five.numr five.tosf fiveeighths fiveinferior fivesixths fivesuperior florin forces formFeed-control four four.dnom four.numr four.tosf fourfifths fourinferior foursuperior fraction fullBlock g gamma gbreve gcircumflex gcommaaccent gdotaccent ge-cy gedescender-cy germandbls gestrokehook-cy ghemiddlehook-cy ghestroke-cy gheupturn-cy gje-cy globeWithMeridians grave grave.case gravecomb greater greater.spacer greater_colon.liga greater_equal.liga greater_equal.ss02 greater_equal_greater.liga greater_greater.liga greater_greater_equal.liga greater_greater_greater.liga greater_greater_hyphen.liga greater_hyphen.liga greater_hyphen_greater.liga greaterequal groupSeparator-control guillemetleft guillemetleft.case guillemetright guillemetright.case guilsinglleft guilsinglleft.case guilsinglright guilsinglright.case h ha-cy haabkhasian-cy hadescender-cy hahook-cy hardsign-cy hastroke-cy hbar hcircumflex heart helmsymbol heta horizontalTabulation-control house hungarumlaut hungarumlaut.case hungarumlautcomb hyphen hyphen.case hyphen.lc hyphen.spacer hyphen_asciitilde.liga hyphen_bar.liga hyphen_greater.liga hyphen_greater_greater.liga hyphen_hyphen.liga hyphen_hyphen_greater.liga hyphen_hyphen_hyphen.liga hyphen_less.liga hyphen_less_less.liga i i-cy i.salt_low ia-cy iacute ibreve icircumflex idieresis idieresis-cy idotaccent ie-cy iebreve-cy iegrave-cy igrave ii-cy iigrave-cy iishort-cy iishorttail-cy ij imacron imacron-cy increment infinity infinity.case integral integralbt integraltp intersection inverseWhiteCircle invsmileface io-cy iogonek iota iotadasia iotadasiaoxia iotadasiaperispomeni iotadasiavaria iotadialytikaoxia iotadialytikaperispomeni iotadialytikavaria iotadieresis iotadieresistonos iotamacron iotaoxia iotaperispomeni iotapsili iotapsilioxia iotapsiliperispomeni iotapsilivaria iotatonos iotavaria iotavrachy itilde iu-cy izhitsa-cy izhitsadblgrave-cy j j.salt_low jcircumflex je-cy k ka-cy kabashkir-cy kadescender-cy kahook-cy kaiSymbol kappa kappaSymbol kastroke-cy kaverticalstroke-cy kcommaaccent keyboard kgreenlandic kje-cy komide-cy komidje-cy komidzje-cy komilje-cy kominje-cy komisje-cy komitje-cy komizje-cy koppa koppaArchaic koronis ksi-cy l l.spacer lacute lambda largeCircle lcaron lcommaaccent ldot leftBlackArrow leftBlackTriangle leftBlock leftFiveEighthsBlock leftHalfBlackCircle leftHalfBlackSquare leftHalfBlackWhiteCircle leftHookArrow leftLongArrow leftLongDoubleArrow leftLongDoubleFromBarArrow leftLongFromBarArrow leftOneEighthBlock leftOneQuarterBlock leftRightLongArrow leftRightLongDoubleArrow leftSevenEighthsBlock leftTabArrow leftThreeEighthsBlock leftThreeQuartersBlock leftanglebracket-math leftcurlybracketlowerhook leftcurlybracketmiddlepiece leftcurlybracketupperhook leftsquarebracketextension leftsquarebracketlowercorner leftsquarebracketuppercorner less less.spacer less_asciitilde.liga less_asciitilde_asciitilde.liga less_asciitilde_greater.liga less_asterisk.liga less_asterisk_greater.liga less_bar.liga less_bar_bar.liga less_bar_bar_bar.liga less_bar_greater.liga less_colon.liga less_dollar.liga less_dollar_greater.liga less_equal.liga less_equal.ss02 less_equal_bar.liga less_equal_equal.liga less_equal_equal_greater.liga less_equal_greater.liga less_equal_less.liga less_exclam_hyphen_hyphen.liga less_greater.liga less_hyphen.liga less_hyphen_bar.liga less_hyphen_greater.liga less_hyphen_hyphen.liga less_hyphen_less.liga less_less.liga less_less_equal.liga less_less_hyphen.liga less_less_less.liga less_plus.liga less_plus_greater.liga less_slash.liga less_slash_greater.liga lessequal lha-cy lineFeed-control liraTurkish literSign lje-cy logicaland logicalnot logicalor lowerFiveEighthsBlock lowerHalfArc lowerHalfBlackWhiteCircle lowerHalfInverseWhiteCircle lowerLeftArc lowerLeftQuadrantWhiteCircle lowerOneEighthBlock lowerOneQuarterBlock lowerRightArc lowerRightDiagonalHalfBlackSquare lowerRightQuadrantWhiteCircle lowerSevenEighthsBlock lowerThreeEighthsBlock lowerThreeQuartersBlock lowernumeral-greek lozenge lslash ltshade m macron macron.case macroncomb male micro minus minus.dnom minus.numr minusinferior minussuperior models mu multiply musicalnote musicalnotedbl n nacute nacute.loclPLK napostrophe ncaron ncommaaccent negateddoubleverticalbardoublerightturnstile negativeAcknowledge-control newline-control nine nine.dnom nine.numr nine.tosf nineinferior ninesuperior nje-cy nmod notequal notidentical nottrue ntilde nu null null-control numbersign numbersign.spacer numbersign_braceleft.liga numbersign_bracketleft.liga numbersign_colon.liga numbersign_colon.liga_rem numbersign_equal.liga numbersign_exclam.liga numbersign_numbersign.liga numbersign_numbersign_numbersign.liga numbersign_numbersign_numbersign_numbersign.liga numbersign_parenleft.liga numbersign_question.liga numbersign_underscore.liga numbersign_underscore_parenleft.liga numeral-greek numero o o-cy oacute oacute.loclPLK obarred-cy obarreddieresis-cy obreve ocircumflex odieresis odieresis-cy oe ogonek ograve ohungarumlaut omacron omega omega-cy omegadasia omegadasiaoxia omegadasiaoxiaypogegrammeni omegadasiaperispomeni omegadasiaperispomeniypogegrammeni omegadasiavaria omegadasiavariaypogegrammeni omegadasiaypogegrammeni omegaoxia omegaoxiaypogegrammeni omegaperispomeni omegaperispomeniypogegrammeni omegapsili omegapsilioxia omegapsilioxiaypogegrammeni omegapsiliperispomeni omegapsiliperispomeniypogegrammeni omegapsilivaria omegapsilivariaypogegrammeni omegapsiliypogegrammeni omegatonos omegavaria omegavariaypogegrammeni omegaypogegrammeni omicron omicrondasia omicrondasiaoxia omicrondasiavaria omicronoxia omicronpsili omicronpsilioxia omicronpsilivaria omicrontonos omicronvaria one one.dnom one.numr one.tosf oneeighth onefifth onefraction onehalf oneinferior onequarter onesixth onesuperior onethird optionKey ordfeminine ordmasculine oslash oslashacute otilde overlinecomb oxia oxia.case p pagedown pageup palochka-cy pamphyliandigamma paragraph parenleft parenleft.case parenleft.dnom parenleft.numr parenleft.spacer parenleftextension parenleftinferior parenleftlowerhook parenleftsuperior parenleftupperhook parenright parenright.case parenright.dnom parenright.numr parenrightextension parenrightinferior parenrightlowerhook parenrightsuperior parenrightupperhook partialdiff pe-cy pedescender-cy pemiddlehook-cy percent percent.spacer percent_percent.liga period period.spacer period_equal.liga period_hyphen.liga period_period.liga period_period_less.liga period_period_period.liga period_question.liga periodcentered perispomeni perispomenicomb perspective perthousand phi phiSymbol pi piSymbol plus plus.dnom plus.lc plus.numr plus.spacer plus_greater.liga plus_plus.liga plus_plus_plus.liga plusinferior plusminus plussuperior primemod product projective propellor prosgegrammeni psi psi-cy psili psilioxia psiliperispomeni psilivaria q qa-cy quadrantLowerLeft quadrantLowerRight quadrantUpperLeft quadrantUpperLeftAndLowerLeftAndLowerRight quadrantUpperLeftAndLowerRight quadrantUpperLeftAndUpperRightAndLowerLeft quadrantUpperLeftAndUpperRightAndLowerRight quadrantUpperRight quadrantUpperRightAndLowerLeft quadrantUpperRightAndLowerLeftAndLowerRight question question.spacer question_colon.liga question_equal.liga question_period.liga question_question.liga questiondown questiondown.case questiongreek quotedbl quotedblbase quotedblleft quotedblright quoteleft quoteright quotesinglbase quotesingle r r.ss01 racute radical rcaron rcommaaccent recordSeparator-control registered returnsymbol reverseddottedlunatesigmasymbol reversedlunatesigmasymbol reversedze-cy revlogicalnot rha-cy rho rhoStrokeSymbol rhoSymbol rhodasia rhopsili rightBlackTriangle rightBlock rightCircledPlusArrow rightHalfBlackCircle rightHalfBlackSquare rightHalfBlackWhiteCircle rightLongDoubleArrow rightLongDoubleFromBarArrow rightLongFromBarArrow rightLongSquiggleArrow rightOneEighthBlock rightTabArrow rightanglebracket-math rightcurlybracketlowerhook rightcurlybracketmiddlepiece rightcurlybracketupperhook rightlongArrow rightsquarebracketextension rightsquarebracketlowercorner rightsquarebracketuppercorner righttack ring ring.case ringcomb ruble rupeeIndian s sacute sacute.loclPLK sampi san scaron scedilla schwa-cy schwadieresis-cy scircumflex scommaaccent section semicolon semicolon.spacer semicolon_semicolon.liga semisoftsign-cy seven seven.dnom seven.numr seven.tosf seveneighths seveninferior sevensuperior sha-cy shade shcha-cy shha-cy shhadescender-cy shiftIn-control shiftOut-control sho sigma sigmaLunateSymbol sigmafinal six six.dnom six.numr six.tosf sixinferior sixsuperior skullAndCrossbones slash slash.spacer slash_asterisk.liga slash_backslash.liga slash_equal.liga slash_equal_equal.liga slash_greater.liga slash_slash.liga slash_slash_slash.liga smileface softhyphen softhyphen.case softsign-cy space-control spade squarewhitewithsmallblack startOfHeading-control startOfText-control sterling stigma strokelongoverlay strokeshortoverlay substitute-control substituteFormTwo-control summation sun synchronousIdle-control t tackdown tackleft tau tbar tcaron tcedilla tcommaaccent te-cy tedescender-cy tetse-cy therefore theta thetaSymbol thorn three three.dnom three.numr three.tosf threeTurned threeeighths threefifths threeinferior threequarters threesuperior tilde tilde.case tildecomb tironiansignet tonos tonos.case trademark triaglf triagupTriangle triangledown triangleright tripleverticalbarrightturnstile true tse-cy tshe-cy two two.dnom two.numr two.tosf twoTurned twofifths twoinferior twosuperior twothirds u u-cy uacute ubreve ucircumflex udieresis udieresis-cy ugrave uhungarumlaut uhungarumlaut-cy uk-cy umacron umacron-cy underscore underscore.spacer underscore_bar_underscore.liga underscore_underscore.liga underscoredbl uni256D uni256E uni256F uni2570 uniE000 uniE001 uniE002 uniE003 uniE0A0 uniE0A1 uniE0A2 uniE0B0 uniE0B1 uniE0B2 uniE0B3 uniFEFF unitSeparator-control uogonek upBetweenTwoHorizontalBarsArrowHead upBlackArrow upBlock upQuadrupleArrow upperHalfArc upperHalfBlackWhiteCircle upperHalfInverseWhiteCircle upperLeftArc upperLeftDiagonalHalfBlackSquare upperLeftQuadrantWhiteCircle upperLeftWhiteCircle upperOneEighthBlock upperRightArc upperRightQuadrantWhiteCircle upsilon upsilondasia upsilondasiaoxia upsilondasiaperispomeni upsilondasiavaria upsilondialytikaoxia upsilondialytikaperispomeni upsilondialytikavaria upsilondieresis upsilondieresistonos upsilonmacron upsilonoxia upsilonperispomeni upsilonpsili upsilonpsilioxia upsilonpsiliperispomeni upsilonpsilivaria upsilontonos upsilonvaria upsilonvrachy uptack uring ushort-cy ustrait-cy ustraitstroke-cy utilde v varia varia.case ve-cy verticalBisectingLineWhiteSquare verticalTabulation-control w w.spacer w_w_w.liga wacute wcircumflex wdieresis we-cy wgrave whiteCircle whiteDiamond whiteFrowningFace whiteRect whiteSquareWithLowerLeftQuadrant whiteSquareWithLowerRightQuadrant whiteSquareWithRoundedCorners whiteSquareWithUpperLeftQuadrant whiteSquareWithUpperRightQuadrant whiteVerticalRect x x.multiply xi y yacute yae-cy yat-cy ycircumflex ydieresis yen yeru-cy yerudieresis-cy ygrave yi-cy yot ypogegrammeni ypogegrammenicomb yusbig-cy yusbigiotified-cy yuslittle-cy yuslittleiotified-cy z zacute zacute.loclPLK zcaron zdotaccent ze-cy zedescender-cy zedieresis-cy zero zero.dnom zero.numr zero.tosf zero.tosf.zero zero.zero zero.zero.tosf zeroinferior zerosuperior zeta zhe-cy zhebreve-cy zhedescender-cy zhedieresis-cy"; name = NotSpace; }, { @@ -212,7 +212,7 @@ code = "pos @Uppercase <5 0 10 0>;\012"; name = cpsp; }, { -code = "### start of generated calt\012lookup bar_bar_bar_greater {\012 ignore sub bar bar' bar bar greater;\012 ignore sub bar' bar bar greater greater;\012 sub LIG LIG LIG greater' by bar_bar_bar_greater.liga;\012 sub LIG LIG bar' greater by LIG;\012 sub LIG bar' bar greater by LIG;\012 sub bar' bar bar greater by LIG;\012} bar_bar_bar_greater;\012\012lookup less_bar_bar_bar {\012 ignore sub less less' bar bar bar;\012 ignore sub less' bar bar bar bar;\012 sub LIG LIG LIG bar' by less_bar_bar_bar.liga;\012 sub LIG LIG bar' bar by LIG;\012 sub LIG bar' bar bar by LIG;\012 sub less' bar bar bar by LIG;\012} less_bar_bar_bar;\012\012lookup less_equal_equal_greater {\012 ignore sub less less' equal equal greater;\012 ignore sub less' equal equal greater greater;\012 ignore sub parenleft question less' equal equal greater;\012 sub LIG LIG LIG greater' by less_equal_equal_greater.liga;\012 sub LIG LIG equal' greater by LIG;\012 sub LIG equal' equal greater by LIG;\012 sub less' equal equal greater by LIG;\012} less_equal_equal_greater;\012\012lookup less_exclam_hyphen_hyphen {\012 ignore sub less less' exclam hyphen hyphen;\012 ignore sub less' exclam hyphen hyphen hyphen;\012 ignore sub parenleft question less' exclam hyphen hyphen;\012 sub LIG LIG LIG hyphen' by less_exclam_hyphen_hyphen.liga;\012 sub LIG LIG hyphen' hyphen by LIG;\012 sub LIG exclam' hyphen hyphen by LIG;\012 sub less' exclam hyphen hyphen by LIG;\012} less_exclam_hyphen_hyphen;\012\012lookup numbersign_numbersign_numbersign_numbersign {\012 ignore sub numbersign numbersign' numbersign numbersign numbersign;\012 ignore sub numbersign' numbersign numbersign numbersign numbersign;\012 sub LIG LIG LIG numbersign' by numbersign_numbersign_numbersign_numbersign.liga;\012 sub LIG LIG numbersign' numbersign by LIG;\012 sub LIG numbersign' numbersign numbersign by LIG;\012 sub numbersign' numbersign numbersign numbersign by LIG;\012} numbersign_numbersign_numbersign_numbersign;\012\012lookup asciitilde_asciitilde_greater {\012 ignore sub asciitilde asciitilde' asciitilde greater;\012 ignore sub asciitilde' asciitilde greater greater;\012 sub LIG LIG greater' by asciitilde_asciitilde_greater.liga;\012 sub LIG asciitilde' greater by LIG;\012 sub asciitilde' asciitilde greater by LIG;\012} asciitilde_asciitilde_greater;\012\012lookup asterisk_asterisk_asterisk {\012 ignore sub asterisk asterisk' asterisk asterisk;\012 ignore sub asterisk' asterisk asterisk asterisk;\012 ignore sub slash asterisk' asterisk asterisk;\012 ignore sub asterisk' asterisk asterisk slash;\012 sub LIG LIG asterisk' by asterisk_asterisk_asterisk.liga;\012 sub LIG asterisk' asterisk by LIG;\012 sub asterisk' asterisk asterisk by LIG;\012} asterisk_asterisk_asterisk;\012\012lookup bar_bar_equal {\012 ignore sub bar bar' bar equal;\012 ignore sub bar' bar equal equal;\012 sub LIG LIG equal' by bar_bar_equal.liga;\012 sub LIG bar' equal by LIG;\012 sub bar' bar equal by LIG;\012} bar_bar_equal;\012\012lookup bar_bar_greater {\012 ignore sub bar bar' bar greater;\012 ignore sub bar' bar greater greater;\012 ignore sub less bar' bar greater;\012 sub LIG LIG greater' by bar_bar_greater.liga;\012 sub LIG bar' greater by LIG;\012 sub bar' bar greater by LIG;\012} bar_bar_greater;\012\012lookup bar_bar_hyphen {\012 ignore sub bar bar' bar hyphen;\012 ignore sub bar' bar hyphen hyphen;\012 sub LIG LIG hyphen' by bar_bar_hyphen.liga;\012 sub LIG bar' hyphen by LIG;\012 sub bar' bar hyphen by LIG;\012} bar_bar_hyphen;\012\012lookup bar_equal_greater {\012 ignore sub bar bar' equal greater;\012 ignore sub bar' equal greater greater;\012 sub LIG LIG greater' by bar_equal_greater.liga;\012 sub LIG equal' greater by LIG;\012 sub bar' equal greater by LIG;\012} bar_equal_greater;\012\012lookup bar_hyphen_greater {\012 ignore sub bar bar' hyphen greater;\012 ignore sub bar' hyphen greater greater;\012 sub LIG LIG greater' by bar_hyphen_greater.liga;\012 sub LIG hyphen' greater by LIG;\012 sub bar' hyphen greater by LIG;\012} bar_hyphen_greater;\012\012lookup colon_colon_colon {\012 ignore sub colon colon' colon colon;\012 ignore sub colon' colon colon colon;\012 ignore sub parenleft question colon' colon colon;\012 sub LIG LIG colon' by colon_colon_colon.liga;\012 sub LIG colon' colon by LIG;\012 sub colon' colon colon by LIG;\012} colon_colon_colon;\012\012lookup colon_colon_equal {\012 ignore sub colon colon' colon equal;\012 ignore sub colon' colon equal equal;\012 ignore sub parenleft question colon' colon equal;\012 sub LIG LIG equal' by colon_colon_equal.liga;\012 sub LIG colon' equal by LIG;\012 sub colon' colon equal by LIG;\012} colon_colon_equal;\012\012lookup equal_colon_equal {\012 ignore sub equal equal' colon equal;\012 ignore sub equal' colon equal equal;\012 ignore sub parenleft question equal' colon equal;\012 ignore sub parenleft question less equal' colon equal;\012 sub LIG LIG equal' by equal_colon_equal.liga;\012 sub LIG colon' equal by LIG;\012 sub equal' colon equal by LIG;\012} equal_colon_equal;\012\012lookup equal_equal_equal {\012 ignore sub equal equal' equal equal;\012 ignore sub equal' equal equal equal;\012 ignore sub parenleft question equal' equal equal;\012 ignore sub parenleft question less equal' equal equal;\012 sub LIG LIG equal' by equal_equal_equal.liga;\012 sub LIG equal' equal by LIG;\012 sub equal' equal equal by LIG;\012} equal_equal_equal;\012\012lookup equal_equal_greater {\012 ignore sub equal equal' equal greater;\012 ignore sub equal' equal greater greater;\012 ignore sub parenleft question equal' equal greater;\012 ignore sub parenleft question less equal' equal greater;\012 sub LIG LIG greater' by equal_equal_greater.liga;\012 sub LIG equal' greater by LIG;\012 sub equal' equal greater by LIG;\012} equal_equal_greater;\012\012lookup equal_exclam_equal {\012 ignore sub equal equal' exclam equal;\012 ignore sub equal' exclam equal equal;\012 ignore sub parenleft question equal' exclam equal;\012 ignore sub parenleft question less equal' exclam equal;\012 sub LIG LIG equal' by equal_exclam_equal.liga;\012 sub LIG exclam' equal by LIG;\012 sub equal' exclam equal by LIG;\012} equal_exclam_equal;\012\012lookup equal_greater_greater {\012 ignore sub equal equal' greater greater;\012 ignore sub equal' greater greater greater;\012 ignore sub parenleft question equal' greater greater;\012 ignore sub parenleft question less equal' greater greater;\012 sub LIG LIG greater' by equal_greater_greater.liga;\012 sub LIG greater' greater by LIG;\012 sub equal' greater greater by LIG;\012} equal_greater_greater;\012\012lookup equal_less_less {\012 ignore sub equal equal' less less;\012 ignore sub equal' less less less;\012 ignore sub parenleft question equal' less less;\012 ignore sub parenleft question less equal' less less;\012 sub LIG LIG less' by equal_less_less.liga;\012 sub LIG less' less by LIG;\012 sub equal' less less by LIG;\012} equal_less_less;\012\012lookup equal_slash_equal {\012 ignore sub equal equal' slash equal;\012 ignore sub equal' slash equal equal;\012 ignore sub parenleft question equal' slash equal;\012 ignore sub parenleft question less equal' slash equal;\012 sub LIG LIG equal' by equal_slash_equal.liga;\012 sub LIG slash' equal by LIG;\012 sub equal' slash equal by LIG;\012} equal_slash_equal;\012\012lookup exclam_equal_equal {\012 ignore sub exclam exclam' equal equal;\012 ignore sub exclam' equal equal equal;\012 ignore sub parenleft question exclam' equal equal;\012 ignore sub parenleft question less exclam' equal equal;\012 sub LIG LIG equal' by exclam_equal_equal.liga;\012 sub LIG equal' equal by LIG;\012 sub exclam' equal equal by LIG;\012} exclam_equal_equal;\012\012lookup exclam_exclam_period {\012 ignore sub exclam exclam' exclam period;\012 ignore sub exclam' exclam period period;\012 ignore sub parenleft question exclam' exclam period;\012 ignore sub parenleft question less exclam' exclam period;\012 sub LIG LIG period' by exclam_exclam_period.liga;\012 sub LIG exclam' period by LIG;\012 sub exclam' exclam period by LIG;\012} exclam_exclam_period;\012\012lookup greater_equal_greater {\012 ignore sub greater greater' equal greater;\012 ignore sub greater' equal greater greater;\012 sub LIG LIG greater' by greater_equal_greater.liga;\012 sub LIG equal' greater by LIG;\012 sub greater' equal greater by LIG;\012} greater_equal_greater;\012\012lookup greater_greater_equal {\012 ignore sub greater greater' greater equal;\012 ignore sub greater' greater equal equal;\012 sub LIG LIG equal' by greater_greater_equal.liga;\012 sub LIG greater' equal by LIG;\012 sub greater' greater equal by LIG;\012} greater_greater_equal;\012\012lookup greater_greater_greater {\012 ignore sub greater greater' greater greater;\012 ignore sub greater' greater greater greater;\012 ignore sub asterisk greater' greater greater;\012 ignore sub plus greater' greater greater;\012 ignore sub dollar greater' greater greater;\012 sub LIG LIG greater' by greater_greater_greater.liga;\012 sub LIG greater' greater by LIG;\012 sub greater' greater greater by LIG;\012} greater_greater_greater;\012\012lookup greater_greater_hyphen {\012 ignore sub greater greater' greater hyphen;\012 ignore sub greater' greater hyphen hyphen;\012 sub LIG LIG hyphen' by greater_greater_hyphen.liga;\012 sub LIG greater' hyphen by LIG;\012 sub greater' greater hyphen by LIG;\012} greater_greater_hyphen;\012\012lookup greater_hyphen_greater {\012 ignore sub greater greater' hyphen greater;\012 ignore sub greater' hyphen greater greater;\012 sub LIG LIG greater' by greater_hyphen_greater.liga;\012 sub LIG hyphen' greater by LIG;\012 sub greater' hyphen greater by LIG;\012} greater_hyphen_greater;\012\012lookup hyphen_greater_greater {\012 ignore sub hyphen hyphen' greater greater;\012 ignore sub hyphen' greater greater greater;\012 sub LIG LIG greater' by hyphen_greater_greater.liga;\012 sub LIG greater' greater by LIG;\012 sub hyphen' greater greater by LIG;\012} hyphen_greater_greater;\012\012lookup hyphen_hyphen_greater {\012 ignore sub hyphen hyphen' hyphen greater;\012 ignore sub hyphen' hyphen greater greater;\012 sub LIG LIG greater' by hyphen_hyphen_greater.liga;\012 sub LIG hyphen' greater by LIG;\012 sub hyphen' hyphen greater by LIG;\012} hyphen_hyphen_greater;\012\012lookup hyphen_hyphen_hyphen {\012 ignore sub hyphen hyphen' hyphen hyphen;\012 ignore sub hyphen' hyphen hyphen hyphen;\012 sub LIG LIG hyphen' by hyphen_hyphen_hyphen.liga;\012 sub LIG hyphen' hyphen by LIG;\012 sub hyphen' hyphen hyphen by LIG;\012} hyphen_hyphen_hyphen;\012\012lookup hyphen_less_less {\012 ignore sub hyphen hyphen' less less;\012 ignore sub hyphen' less less less;\012 sub LIG LIG less' by hyphen_less_less.liga;\012 sub LIG less' less by LIG;\012 sub hyphen' less less by LIG;\012} hyphen_less_less;\012\012lookup less_asciitilde_asciitilde {\012 ignore sub less less' asciitilde asciitilde;\012 ignore sub less' asciitilde asciitilde asciitilde;\012 sub LIG LIG asciitilde' by less_asciitilde_asciitilde.liga;\012 sub LIG asciitilde' asciitilde by LIG;\012 sub less' asciitilde asciitilde by LIG;\012} less_asciitilde_asciitilde;\012\012lookup less_asciitilde_greater {\012 ignore sub less less' asciitilde greater;\012 ignore sub less' asciitilde greater greater;\012 sub LIG LIG greater' by less_asciitilde_greater.liga;\012 sub LIG asciitilde' greater by LIG;\012 sub less' asciitilde greater by LIG;\012} less_asciitilde_greater;\012\012lookup less_asterisk_greater {\012 sub LIG LIG greater' by less_asterisk_greater.liga;\012 sub LIG asterisk' greater by LIG;\012 sub less' asterisk greater by LIG;\012} less_asterisk_greater;\012\012lookup less_bar_bar {\012 ignore sub less less' bar bar;\012 ignore sub less' bar bar bar;\012 ignore sub less' bar bar greater;\012 sub LIG LIG bar' by less_bar_bar.liga;\012 sub LIG bar' bar by LIG;\012 sub less' bar bar by LIG;\012} less_bar_bar;\012\012lookup less_bar_greater {\012 ignore sub less less' bar greater;\012 ignore sub less' bar greater greater;\012 sub LIG LIG greater' by less_bar_greater.liga;\012 sub LIG bar' greater by LIG;\012 sub less' bar greater by LIG;\012} less_bar_greater;\012\012lookup less_dollar_greater {\012 sub LIG LIG greater' by less_dollar_greater.liga;\012 sub LIG dollar' greater by LIG;\012 sub less' dollar greater by LIG;\012} less_dollar_greater;\012\012lookup less_equal_bar {\012 ignore sub less less' equal bar;\012 ignore sub less' equal bar bar;\012 ignore sub parenleft question less' equal bar;\012 sub LIG LIG bar' by less_equal_bar.liga;\012 sub LIG equal' bar by LIG;\012 sub less' equal bar by LIG;\012} less_equal_bar;\012\012lookup less_equal_equal {\012 ignore sub less less' equal equal;\012 ignore sub less' equal equal equal;\012 ignore sub parenleft question less' equal equal;\012 sub LIG LIG equal' by less_equal_equal.liga;\012 sub LIG equal' equal by LIG;\012 sub less' equal equal by LIG;\012} less_equal_equal;\012\012lookup less_equal_greater {\012 ignore sub less less' equal greater;\012 ignore sub less' equal greater greater;\012 ignore sub parenleft question less' equal greater;\012 sub LIG LIG greater' by less_equal_greater.liga;\012 sub LIG equal' greater by LIG;\012 sub less' equal greater by LIG;\012} less_equal_greater;\012\012lookup less_equal_less {\012 ignore sub less less' equal less;\012 ignore sub less' equal less less;\012 ignore sub parenleft question less' equal less;\012 sub LIG LIG less' by less_equal_less.liga;\012 sub LIG equal' less by LIG;\012 sub less' equal less by LIG;\012} less_equal_less;\012\012lookup less_hyphen_bar {\012 ignore sub less less' hyphen bar;\012 ignore sub less' hyphen bar bar;\012 sub LIG LIG bar' by less_hyphen_bar.liga;\012 sub LIG hyphen' bar by LIG;\012 sub less' hyphen bar by LIG;\012} less_hyphen_bar;\012\012lookup less_hyphen_greater {\012 ignore sub less less' hyphen greater;\012 ignore sub less' hyphen greater greater;\012 sub LIG LIG greater' by less_hyphen_greater.liga;\012 sub LIG hyphen' greater by LIG;\012 sub less' hyphen greater by LIG;\012} less_hyphen_greater;\012\012lookup less_hyphen_hyphen {\012 ignore sub less less' hyphen hyphen;\012 ignore sub less' hyphen hyphen hyphen;\012 sub LIG LIG hyphen' by less_hyphen_hyphen.liga;\012 sub LIG hyphen' hyphen by LIG;\012 sub less' hyphen hyphen by LIG;\012} less_hyphen_hyphen;\012\012lookup less_hyphen_less {\012 ignore sub less less' hyphen less;\012 ignore sub less' hyphen less less;\012 sub LIG LIG less' by less_hyphen_less.liga;\012 sub LIG hyphen' less by LIG;\012 sub less' hyphen less by LIG;\012} less_hyphen_less;\012\012lookup less_less_equal {\012 ignore sub less less' less equal;\012 ignore sub less' less equal equal;\012 sub LIG LIG equal' by less_less_equal.liga;\012 sub LIG less' equal by LIG;\012 sub less' less equal by LIG;\012} less_less_equal;\012\012lookup less_less_hyphen {\012 ignore sub less less' less hyphen;\012 ignore sub less' less hyphen hyphen;\012 sub LIG LIG hyphen' by less_less_hyphen.liga;\012 sub LIG less' hyphen by LIG;\012 sub less' less hyphen by LIG;\012} less_less_hyphen;\012\012lookup less_less_less {\012 ignore sub less less' less less;\012 ignore sub less' less less less;\012 ignore sub less' less less asterisk;\012 ignore sub less' less less plus;\012 ignore sub less' less less dollar;\012 sub LIG LIG less' by less_less_less.liga;\012 sub LIG less' less by LIG;\012 sub less' less less by LIG;\012} less_less_less;\012\012lookup less_plus_greater {\012 sub LIG LIG greater' by less_plus_greater.liga;\012 sub LIG plus' greater by LIG;\012 sub less' plus greater by LIG;\012} less_plus_greater;\012\012lookup less_slash_greater {\012 ignore sub less less' slash greater;\012 ignore sub less' slash greater greater;\012 sub LIG LIG greater' by less_slash_greater.liga;\012 sub LIG slash' greater by LIG;\012 sub less' slash greater by LIG;\012} less_slash_greater;\012\012lookup numbersign_numbersign_numbersign {\012 ignore sub numbersign numbersign' numbersign numbersign;\012 ignore sub numbersign' numbersign numbersign numbersign;\012 sub LIG LIG numbersign' by numbersign_numbersign_numbersign.liga;\012 sub LIG numbersign' numbersign by LIG;\012 sub numbersign' numbersign numbersign by LIG;\012} numbersign_numbersign_numbersign;\012\012lookup numbersign_underscore_parenleft {\012 ignore sub numbersign numbersign' underscore parenleft;\012 ignore sub numbersign' underscore parenleft parenleft;\012 sub LIG LIG parenleft' by numbersign_underscore_parenleft.liga;\012 sub LIG underscore' parenleft by LIG;\012 sub numbersign' underscore parenleft by LIG;\012} numbersign_underscore_parenleft;\012\012lookup period_period_less {\012 ignore sub period period' period less;\012 ignore sub period' period less less;\012 sub LIG LIG less' by period_period_less.liga;\012 sub LIG period' less by LIG;\012 sub period' period less by LIG;\012} period_period_less;\012\012lookup period_period_period {\012 ignore sub period period' period period;\012 ignore sub period' period period period;\012 sub LIG LIG period' by period_period_period.liga;\012 sub LIG period' period by LIG;\012 sub period' period period by LIG;\012} period_period_period;\012\012lookup plus_plus_plus {\012 ignore sub plus plus' plus plus;\012 ignore sub plus' plus plus plus;\012 sub LIG LIG plus' by plus_plus_plus.liga;\012 sub LIG plus' plus by LIG;\012 sub plus' plus plus by LIG;\012} plus_plus_plus;\012\012lookup slash_equal_equal {\012 ignore sub slash slash' equal equal;\012 ignore sub slash' equal equal equal;\012 sub LIG LIG equal' by slash_equal_equal.liga;\012 sub LIG equal' equal by LIG;\012 sub slash' equal equal by LIG;\012} slash_equal_equal;\012\012lookup slash_slash_slash {\012 ignore sub slash slash' slash slash;\012 ignore sub slash' slash slash slash;\012 sub LIG LIG slash' by slash_slash_slash.liga;\012 sub LIG slash' slash by LIG;\012 sub slash' slash slash by LIG;\012} slash_slash_slash;\012\012lookup underscore_bar_underscore {\012 ignore sub underscore underscore' bar underscore;\012 ignore sub underscore' bar underscore underscore;\012 sub LIG LIG underscore' by underscore_bar_underscore.liga;\012 sub LIG bar' underscore by LIG;\012 sub underscore' bar underscore by LIG;\012} underscore_bar_underscore;\012\012lookup w_w_w {\012 ignore sub w w' w w;\012 ignore sub w' w w w;\012 sub LIG LIG w' by w_w_w.liga;\012 sub LIG w' w by LIG;\012 sub w' w w by LIG;\012} w_w_w;\012\012lookup F_l {\012 sub LIG l' by F_l.liga;\012 sub F' l by LIG;\012} F_l;\012\012lookup T_l {\012 sub LIG l' by T_l.liga;\012 sub T' l by LIG;\012} T_l;\012\012lookup ampersand_ampersand {\012 ignore sub ampersand ampersand' ampersand;\012 ignore sub ampersand' ampersand ampersand;\012 sub LIG ampersand' by ampersand_ampersand.liga;\012 sub ampersand' ampersand by LIG;\012} ampersand_ampersand;\012\012lookup asciicircum_equal {\012 ignore sub asciicircum asciicircum' equal;\012 ignore sub asciicircum' equal equal;\012 sub LIG equal' by asciicircum_equal.liga;\012 sub asciicircum' equal by LIG;\012} asciicircum_equal;\012\012lookup asciitilde_asciitilde {\012 ignore sub asciitilde asciitilde' asciitilde;\012 ignore sub asciitilde' asciitilde asciitilde;\012 sub LIG asciitilde' by asciitilde_asciitilde.liga;\012 sub asciitilde' asciitilde by LIG;\012} asciitilde_asciitilde;\012\012lookup asciitilde_at {\012 ignore sub asciitilde asciitilde' at;\012 ignore sub asciitilde' at at;\012 sub LIG at' by asciitilde_at.liga;\012 sub asciitilde' at by LIG;\012} asciitilde_at;\012\012lookup asciitilde_equal {\012 ignore sub asciitilde asciitilde' equal;\012 ignore sub asciitilde' equal equal;\012 sub LIG equal' by asciitilde_equal.liga;\012 sub asciitilde' equal by LIG;\012} asciitilde_equal;\012\012lookup asciitilde_greater {\012 ignore sub asciitilde asciitilde' greater;\012 ignore sub asciitilde' greater greater;\012 sub LIG greater' by asciitilde_greater.liga;\012 sub asciitilde' greater by LIG;\012} asciitilde_greater;\012\012lookup asciitilde_hyphen {\012 ignore sub asciitilde asciitilde' hyphen;\012 ignore sub asciitilde' hyphen hyphen;\012 sub LIG hyphen' by asciitilde_hyphen.liga;\012 sub asciitilde' hyphen by LIG;\012} asciitilde_hyphen;\012\012lookup asterisk_asterisk {\012 ignore sub asterisk asterisk' asterisk;\012 ignore sub asterisk' asterisk asterisk;\012 ignore sub slash asterisk' asterisk;\012 ignore sub asterisk' asterisk slash;\012 sub LIG asterisk' by asterisk_asterisk.liga;\012 sub asterisk' asterisk by LIG;\012} asterisk_asterisk;\012\012lookup asterisk_greater {\012 ignore sub asterisk asterisk' greater;\012 ignore sub asterisk' greater greater;\012 sub LIG greater' by asterisk_greater.liga;\012 sub asterisk' greater by LIG;\012} asterisk_greater;\012\012lookup asterisk_slash {\012 ignore sub asterisk asterisk' slash;\012 ignore sub asterisk' slash slash;\012 ignore sub slash asterisk' slash;\012 ignore sub asterisk' slash asterisk;\012 sub LIG slash' by asterisk_slash.liga;\012 sub asterisk' slash by LIG;\012} asterisk_slash;\012\012lookup bar_bar {\012 ignore sub bar bar' bar;\012 ignore sub bar' bar bar;\012 sub LIG bar' by bar_bar.liga;\012 sub bar' bar by LIG;\012} bar_bar;\012\012lookup bar_braceright {\012 ignore sub bar bar' braceright;\012 ignore sub bar' braceright braceright;\012 ignore sub braceleft bar' braceright;\012 sub LIG braceright' by bar_braceright.liga;\012 sub bar' braceright by LIG;\012} bar_braceright;\012\012lookup bar_bracketright {\012 ignore sub bar bar' bracketright;\012 ignore sub bar' bracketright bracketright;\012 ignore sub bracketleft bar' bracketright;\012 sub LIG bracketright' by bar_bracketright.liga;\012 sub bar' bracketright by LIG;\012} bar_bracketright;\012\012lookup bar_equal {\012 ignore sub bar bar' equal;\012 ignore sub bar' equal equal;\012 sub LIG equal' by bar_equal.liga;\012 sub bar' equal by LIG;\012} bar_equal;\012\012lookup bar_greater {\012 ignore sub bar bar' greater;\012 ignore sub bar' greater greater;\012 sub LIG greater' by bar_greater.liga;\012 sub bar' greater by LIG;\012} bar_greater;\012\012lookup bar_hyphen {\012 ignore sub bar bar' hyphen;\012 ignore sub bar' hyphen hyphen;\012 ignore sub bar' hyphen bar;\012 sub LIG hyphen' by bar_hyphen.liga;\012 sub bar' hyphen by LIG;\012} bar_hyphen;\012\012lookup braceleft_bar {\012 ignore sub braceleft braceleft' bar;\012 ignore sub braceleft' bar bar;\012 ignore sub braceleft' bar braceright;\012 sub LIG bar' by braceleft_bar.liga;\012 sub braceleft' bar by LIG;\012} braceleft_bar;\012\012lookup bracketleft_bar {\012 ignore sub bracketleft bracketleft' bar;\012 ignore sub bracketleft' bar bar;\012 ignore sub bracketleft' bar bracketright;\012 sub LIG bar' by bracketleft_bar.liga;\012 sub bracketleft' bar by LIG;\012} bracketleft_bar;\012\012lookup bracketright_numbersign {\012 ignore sub bracketright bracketright' numbersign;\012 ignore sub bracketright' numbersign numbersign;\012 sub LIG numbersign' by bracketright_numbersign.liga;\012 sub bracketright' numbersign by LIG;\012} bracketright_numbersign;\012\012lookup colon_colon {\012 ignore sub colon colon' colon;\012 ignore sub colon' colon colon;\012 ignore sub parenleft question colon' colon;\012 sub LIG colon' by colon_colon.liga;\012 sub colon' colon by LIG;\012} colon_colon;\012\012lookup colon_equal {\012 ignore sub colon colon' equal;\012 ignore sub colon' equal equal;\012 ignore sub parenleft question colon' equal;\012 sub LIG equal' by colon_equal.liga;\012 sub colon' equal by LIG;\012} colon_equal;\012\012lookup colon_greater {\012 ignore sub colon colon' greater;\012 ignore sub colon' greater greater;\012 ignore sub parenleft question colon' greater;\012 ignore sub colon' greater equal;\012 sub LIG greater' by colon_greater.liga;\012 sub colon' greater by LIG;\012} colon_greater;\012\012lookup colon_less {\012 ignore sub colon colon' less;\012 ignore sub colon' less less;\012 ignore sub parenleft question colon' less;\012 sub LIG less' by colon_less.liga;\012 sub colon' less by LIG;\012} colon_less;\012\012lookup dollar_greater {\012 ignore sub dollar dollar' greater;\012 ignore sub dollar' greater greater;\012 sub LIG greater' by dollar_greater.liga;\012 sub dollar' greater by LIG;\012} dollar_greater;\012\012lookup equal_equal {\012 ignore sub equal equal' equal;\012 ignore sub equal' equal equal;\012 ignore sub parenleft question equal' equal;\012 ignore sub parenleft question less equal' equal;\012 sub LIG equal' by equal_equal.liga;\012 sub equal' equal by LIG;\012} equal_equal;\012\012lookup equal_greater {\012 ignore sub equal equal' greater;\012 ignore sub equal' greater greater;\012 ignore sub parenleft question equal' greater;\012 ignore sub parenleft question less equal' greater;\012 sub LIG greater' by equal_greater.liga;\012 sub equal' greater by LIG;\012} equal_greater;\012\012lookup exclam_equal {\012 ignore sub exclam exclam' equal;\012 ignore sub exclam' equal equal;\012 ignore sub parenleft question exclam' equal;\012 ignore sub parenleft question less exclam' equal;\012 sub LIG equal' by exclam_equal.liga;\012 sub exclam' equal by LIG;\012} exclam_equal;\012\012lookup exclam_exclam {\012 ignore sub exclam exclam' exclam;\012 ignore sub exclam' exclam exclam;\012 ignore sub parenleft question exclam' exclam;\012 ignore sub parenleft question less exclam' exclam;\012 sub LIG exclam' by exclam_exclam.liga;\012 sub exclam' exclam by LIG;\012} exclam_exclam;\012\012lookup f_l {\012 sub LIG l' by f_l.liga;\012 sub f' l by LIG;\012} f_l;\012\012lookup greater_colon {\012 ignore sub greater greater' colon;\012 ignore sub greater' colon colon;\012 sub LIG colon' by greater_colon.liga;\012 sub greater' colon by LIG;\012} greater_colon;\012\012lookup greater_equal {\012 ignore sub greater greater' equal;\012 ignore sub greater' equal equal;\012 ignore sub greater' equal less;\012 sub LIG equal' by greater_equal.liga;\012 sub greater' equal by LIG;\012} greater_equal;\012\012lookup greater_greater {\012 ignore sub greater greater' greater;\012 ignore sub greater' greater greater;\012 ignore sub asterisk greater' greater;\012 ignore sub plus greater' greater;\012 ignore sub dollar greater' greater;\012 sub LIG greater' by greater_greater.liga;\012 sub greater' greater by LIG;\012} greater_greater;\012\012lookup greater_hyphen {\012 ignore sub greater greater' hyphen;\012 ignore sub greater' hyphen hyphen;\012 sub LIG hyphen' by greater_hyphen.liga;\012 sub greater' hyphen by LIG;\012} greater_hyphen;\012\012lookup hyphen_asciitilde {\012 ignore sub hyphen hyphen' asciitilde;\012 ignore sub hyphen' asciitilde asciitilde;\012 sub LIG asciitilde' by hyphen_asciitilde.liga;\012 sub hyphen' asciitilde by LIG;\012} hyphen_asciitilde;\012\012lookup hyphen_bar {\012 ignore sub hyphen hyphen' bar;\012 ignore sub hyphen' bar bar;\012 ignore sub bar hyphen' bar;\012 sub LIG bar' by hyphen_bar.liga;\012 sub hyphen' bar by LIG;\012} hyphen_bar;\012\012lookup hyphen_greater {\012 ignore sub hyphen hyphen' greater;\012 ignore sub hyphen' greater greater;\012 sub LIG greater' by hyphen_greater.liga;\012 sub hyphen' greater by LIG;\012} hyphen_greater;\012\012lookup hyphen_hyphen {\012 ignore sub hyphen hyphen' hyphen;\012 ignore sub hyphen' hyphen hyphen;\012 sub LIG hyphen' by hyphen_hyphen.liga;\012 sub hyphen' hyphen by LIG;\012} hyphen_hyphen;\012\012lookup hyphen_less {\012 ignore sub hyphen hyphen' less;\012 ignore sub hyphen' less less;\012 sub LIG less' by hyphen_less.liga;\012 sub hyphen' less by LIG;\012} hyphen_less;\012\012lookup less_asciitilde {\012 ignore sub less less' asciitilde;\012 ignore sub less' asciitilde asciitilde;\012 sub LIG asciitilde' by less_asciitilde.liga;\012 sub less' asciitilde by LIG;\012} less_asciitilde;\012\012lookup less_asterisk {\012 ignore sub less less' asterisk;\012 ignore sub less' asterisk asterisk;\012 sub LIG asterisk' by less_asterisk.liga;\012 sub less' asterisk by LIG;\012} less_asterisk;\012\012lookup less_bar {\012 ignore sub less less' bar;\012 ignore sub less' bar bar;\012 sub LIG bar' by less_bar.liga;\012 sub less' bar by LIG;\012} less_bar;\012\012lookup less_colon {\012 ignore sub less less' colon;\012 ignore sub less' colon colon;\012 sub LIG colon' by less_colon.liga;\012 sub less' colon by LIG;\012} less_colon;\012\012lookup less_dollar {\012 ignore sub less less' dollar;\012 ignore sub less' dollar dollar;\012 sub LIG dollar' by less_dollar.liga;\012 sub less' dollar by LIG;\012} less_dollar;\012\012lookup less_equal {\012 ignore sub less less' equal;\012 ignore sub less' equal equal;\012 ignore sub parenleft question less' equal;\012 sub LIG equal' by less_equal.liga;\012 sub less' equal by LIG;\012} less_equal;\012\012lookup less_greater {\012 ignore sub less less' greater;\012 ignore sub less' greater greater;\012 sub LIG greater' by less_greater.liga;\012 sub less' greater by LIG;\012} less_greater;\012\012lookup less_hyphen {\012 ignore sub less less' hyphen;\012 ignore sub less' hyphen hyphen;\012 sub LIG hyphen' by less_hyphen.liga;\012 sub less' hyphen by LIG;\012} less_hyphen;\012\012lookup less_less {\012 ignore sub less less' less;\012 ignore sub less' less less;\012 ignore sub less' less asterisk;\012 ignore sub less' less plus;\012 ignore sub less' less dollar;\012 sub LIG less' by less_less.liga;\012 sub less' less by LIG;\012} less_less;\012\012lookup less_plus {\012 ignore sub less less' plus;\012 ignore sub less' plus plus;\012 sub LIG plus' by less_plus.liga;\012 sub less' plus by LIG;\012} less_plus;\012\012lookup less_slash {\012 ignore sub less less' slash;\012 ignore sub less' slash slash;\012 sub LIG slash' by less_slash.liga;\012 sub less' slash by LIG;\012} less_slash;\012\012lookup numbersign_braceleft {\012 ignore sub numbersign numbersign' braceleft;\012 ignore sub numbersign' braceleft braceleft;\012 sub LIG braceleft' by numbersign_braceleft.liga;\012 sub numbersign' braceleft by LIG;\012} numbersign_braceleft;\012\012lookup numbersign_bracketleft {\012 ignore sub numbersign numbersign' bracketleft;\012 ignore sub numbersign' bracketleft bracketleft;\012 sub LIG bracketleft' by numbersign_bracketleft.liga;\012 sub numbersign' bracketleft by LIG;\012} numbersign_bracketleft;\012\012lookup numbersign_colon {\012 ignore sub numbersign numbersign' colon;\012 ignore sub numbersign' colon colon;\012 sub LIG colon' by numbersign_colon.liga;\012 sub numbersign' colon by LIG;\012} numbersign_colon;\012\012lookup numbersign_equal {\012 ignore sub numbersign numbersign' equal;\012 ignore sub numbersign' equal equal;\012 sub LIG equal' by numbersign_equal.liga;\012 sub numbersign' equal by LIG;\012} numbersign_equal;\012\012lookup numbersign_exclam {\012 ignore sub numbersign numbersign' exclam;\012 ignore sub numbersign' exclam exclam;\012 sub LIG exclam' by numbersign_exclam.liga;\012 sub numbersign' exclam by LIG;\012} numbersign_exclam;\012\012lookup numbersign_numbersign {\012 ignore sub numbersign numbersign' numbersign;\012 ignore sub numbersign' numbersign numbersign;\012 sub LIG numbersign' by numbersign_numbersign.liga;\012 sub numbersign' numbersign by LIG;\012} numbersign_numbersign;\012\012lookup numbersign_parenleft {\012 ignore sub numbersign numbersign' parenleft;\012 ignore sub numbersign' parenleft parenleft;\012 sub LIG parenleft' by numbersign_parenleft.liga;\012 sub numbersign' parenleft by LIG;\012} numbersign_parenleft;\012\012lookup numbersign_question {\012 ignore sub numbersign numbersign' question;\012 ignore sub numbersign' question question;\012 sub LIG question' by numbersign_question.liga;\012 sub numbersign' question by LIG;\012} numbersign_question;\012\012lookup numbersign_underscore {\012 ignore sub numbersign numbersign' underscore;\012 ignore sub numbersign' underscore underscore;\012 sub LIG underscore' by numbersign_underscore.liga;\012 sub numbersign' underscore by LIG;\012} numbersign_underscore;\012\012lookup percent_percent {\012 ignore sub percent percent' percent;\012 ignore sub percent' percent percent;\012 sub LIG percent' by percent_percent.liga;\012 sub percent' percent by LIG;\012} percent_percent;\012\012lookup period_equal {\012 ignore sub period period' equal;\012 ignore sub period' equal equal;\012 sub LIG equal' by period_equal.liga;\012 sub period' equal by LIG;\012} period_equal;\012\012lookup period_hyphen {\012 ignore sub period period' hyphen;\012 ignore sub period' hyphen hyphen;\012 sub LIG hyphen' by period_hyphen.liga;\012 sub period' hyphen by LIG;\012} period_hyphen;\012\012lookup period_period {\012 ignore sub period period' period;\012 ignore sub period' period period;\012 sub LIG period' by period_period.liga;\012 sub period' period by LIG;\012} period_period;\012\012lookup period_question {\012 ignore sub period period' question;\012 ignore sub period' question question;\012 sub LIG question' by period_question.liga;\012 sub period' question by LIG;\012} period_question;\012\012lookup plus_greater {\012 ignore sub plus plus' greater;\012 ignore sub plus' greater greater;\012 sub LIG greater' by plus_greater.liga;\012 sub plus' greater by LIG;\012} plus_greater;\012\012lookup plus_plus {\012 ignore sub plus plus' plus;\012 ignore sub plus' plus plus;\012 sub LIG plus' by plus_plus.liga;\012 sub plus' plus by LIG;\012} plus_plus;\012\012lookup question_colon {\012 ignore sub question question' colon;\012 ignore sub question' colon colon;\012 ignore sub parenleft question' colon;\012 sub LIG colon' by question_colon.liga;\012 sub question' colon by LIG;\012} question_colon;\012\012lookup question_equal {\012 ignore sub question question' equal;\012 ignore sub question' equal equal;\012 ignore sub parenleft question' equal;\012 sub LIG equal' by question_equal.liga;\012 sub question' equal by LIG;\012} question_equal;\012\012lookup question_period {\012 ignore sub question question' period;\012 ignore sub question' period period;\012 sub LIG period' by question_period.liga;\012 sub question' period by LIG;\012} question_period;\012\012lookup question_question {\012 ignore sub question question' question;\012 ignore sub question' question question;\012 sub LIG question' by question_question.liga;\012 sub question' question by LIG;\012} question_question;\012\012lookup semicolon_semicolon {\012 ignore sub semicolon semicolon' semicolon;\012 ignore sub semicolon' semicolon semicolon;\012 sub LIG semicolon' by semicolon_semicolon.liga;\012 sub semicolon' semicolon by LIG;\012} semicolon_semicolon;\012\012lookup slash_asterisk {\012 ignore sub slash slash' asterisk;\012 ignore sub slash' asterisk asterisk;\012 ignore sub slash' asterisk slash;\012 ignore sub asterisk slash' asterisk;\012 sub LIG asterisk' by slash_asterisk.liga;\012 sub slash' asterisk by LIG;\012} slash_asterisk;\012\012lookup slash_equal {\012 ignore sub slash slash' equal;\012 ignore sub slash' equal equal;\012 sub LIG equal' by slash_equal.liga;\012 sub slash' equal by LIG;\012} slash_equal;\012\012lookup slash_greater {\012 ignore sub slash slash' greater;\012 ignore sub slash' greater greater;\012 sub LIG greater' by slash_greater.liga;\012 sub slash' greater by LIG;\012} slash_greater;\012\012lookup slash_slash {\012 ignore sub slash slash' slash;\012 ignore sub slash' slash slash;\012 sub LIG slash' by slash_slash.liga;\012 sub slash' slash by LIG;\012} slash_slash;\012\012lookup underscore_underscore {\012 ignore sub underscore underscore' underscore;\012 ignore sub underscore' underscore underscore;\012 sub LIG underscore' by underscore_underscore.liga;\012 sub underscore' underscore by LIG;\012} underscore_underscore;\012### end of generated calt\012\012sub less asciitilde' greater by asciitilde_asciitilde.liga;\012\012lookup lowercase_hyphen {\012 ignore sub @Tall \\hyphen' @Lowercase;\012 ignore sub @Lowercase \\hyphen' @Tall; \012 sub \\hyphen' @Lowercase by \\hyphen.lc;\012 sub @Lowercase \\hyphen' by \\hyphen.lc;\012} lowercase_hyphen;\012\012lookup lowercase_plus {\012 ignore sub @Tall \\plus' @Lowercase;\012 ignore sub @Lowercase \\plus' @Tall;\012 sub \\plus' @Lowercase by \\plus.lc;\012 sub @Lowercase \\plus' by \\plus.lc;\012} lowercase_plus;\012\012lookup lowercase_asterisk {\012 ignore sub @Tall \\asterisk' @Lowercase;\012 ignore sub @Lowercase \\asterisk' @Tall;\012 sub \\asterisk' @Lowercase by \\asterisk.lc;\012 sub @Lowercase \\asterisk' by \\asterisk.lc;\012} lowercase_asterisk;\012\012lookup uppercase_colon {\012 ignore sub @Tall \\colon' @Lowercase;\012 ignore sub @Lowercase \\colon' @Tall;\012 sub @Tall \\colon' by \\colon.uc;\012 sub \\colon' @Tall by \\colon.uc;\012} uppercase_colon;\012\012# 738\012lookup slash_backslash {\012 ignore sub @NotSpace slash' backslash;\012 ignore sub slash' backslash @NotSpace;\012 sub LIG backslash' by slash_backslash.liga;\012 sub slash' backslash by LIG;\012} slash_backslash;\012\012lookup backslash_slash {\012 ignore sub @NotSpace backslash' slash;\012 ignore sub backslash' slash @NotSpace;\012 sub LIG slash' by backslash_slash.liga;\012 sub backslash' slash by LIG;\012} backslash_slash;\012\012### 795\012\012sub [f i.salt_low j.salt_low] [i j]' by [i.salt_low j.salt_low];\012\012###\012sub \\zero \\x' @HexDigit by \\x.multiply;\012sub @Digit \\x' @Digit by \\x.multiply;\012# sub \\bracketleft [\\x \\X]' \\bracketright by \\x.multiply;\012# sub \\bracketleft [\\v \\V]' \\bracketright by \\checkmark;\012\012###\012\012lookup caltGreekUCdiph {\012 sub @GreekUCdiphIOTA Iota' by Iotadieresis;\012 sub @GreekUCdiphUPSILON Upsilon' by Upsilondieresis;\012} caltGreekUCdiph;\012\012lookup caltGreekUC {\012 sub @GreekUCAcc' @GreekUC by @GreekUCcalt;\012 sub @GreekUC @GreekUCAcc' by @GreekUCcalt;\012 sub @GreekUCAcc' space @GreekUC by @GreekUCcalt;\012 sub @GreekUC space @GreekUCAcc' by @GreekUCcalt;\012} caltGreekUC;\012"; +code = "### start of generated calt\012lookup bar_bar_bar_greater {\012 ignore sub bar bar' bar bar greater;\012 ignore sub bar' bar bar greater greater;\012 sub bar.spacer bar.spacer bar.spacer greater' by bar_bar_bar_greater.liga;\012 sub bar.spacer bar.spacer bar' greater by bar.spacer;\012 sub bar.spacer bar' bar greater by bar.spacer;\012 sub bar' bar bar greater by bar.spacer;\012} bar_bar_bar_greater;\012\012lookup less_bar_bar_bar {\012 ignore sub less less' bar bar bar;\012 ignore sub less' bar bar bar bar;\012 sub less.spacer bar.spacer bar.spacer bar' by less_bar_bar_bar.liga;\012 sub less.spacer bar.spacer bar' bar by bar.spacer;\012 sub less.spacer bar' bar bar by bar.spacer;\012 sub less' bar bar bar by less.spacer;\012} less_bar_bar_bar;\012\012lookup less_equal_equal_greater {\012 ignore sub less less' equal equal greater;\012 ignore sub less' equal equal greater greater;\012 ignore sub parenleft question less' equal equal greater;\012 sub less.spacer equal.spacer equal.spacer greater' by less_equal_equal_greater.liga;\012 sub less.spacer equal.spacer equal' greater by equal.spacer;\012 sub less.spacer equal' equal greater by equal.spacer;\012 sub less' equal equal greater by less.spacer;\012} less_equal_equal_greater;\012\012lookup less_exclam_hyphen_hyphen {\012 ignore sub less less' exclam hyphen hyphen;\012 ignore sub less' exclam hyphen hyphen hyphen;\012 ignore sub parenleft question less' exclam hyphen hyphen;\012 sub less.spacer exclam.spacer hyphen.spacer hyphen' by less_exclam_hyphen_hyphen.liga;\012 sub less.spacer exclam.spacer hyphen' hyphen by hyphen.spacer;\012 sub less.spacer exclam' hyphen hyphen by exclam.spacer;\012 sub less' exclam hyphen hyphen by less.spacer;\012} less_exclam_hyphen_hyphen;\012\012lookup numbersign_numbersign_numbersign_numbersign {\012 ignore sub numbersign numbersign' numbersign numbersign numbersign;\012 ignore sub numbersign' numbersign numbersign numbersign numbersign;\012 sub numbersign.spacer numbersign.spacer numbersign.spacer numbersign' by numbersign_numbersign_numbersign_numbersign.liga;\012 sub numbersign.spacer numbersign.spacer numbersign' numbersign by numbersign.spacer;\012 sub numbersign.spacer numbersign' numbersign numbersign by numbersign.spacer;\012 sub numbersign' numbersign numbersign numbersign by numbersign.spacer;\012} numbersign_numbersign_numbersign_numbersign;\012\012lookup asciitilde_asciitilde_greater {\012 ignore sub asciitilde asciitilde' asciitilde greater;\012 ignore sub asciitilde' asciitilde greater greater;\012 sub asciitilde.spacer asciitilde.spacer greater' by asciitilde_asciitilde_greater.liga;\012 sub asciitilde.spacer asciitilde' greater by asciitilde.spacer;\012 sub asciitilde' asciitilde greater by asciitilde.spacer;\012} asciitilde_asciitilde_greater;\012\012lookup asterisk_asterisk_asterisk {\012 ignore sub asterisk asterisk' asterisk asterisk;\012 ignore sub asterisk' asterisk asterisk asterisk;\012 ignore sub slash asterisk' asterisk asterisk;\012 ignore sub asterisk' asterisk asterisk slash;\012 sub asterisk.spacer asterisk.spacer asterisk' by asterisk_asterisk_asterisk.liga;\012 sub asterisk.spacer asterisk' asterisk by asterisk.spacer;\012 sub asterisk' asterisk asterisk by asterisk.spacer;\012} asterisk_asterisk_asterisk;\012\012lookup bar_bar_equal {\012 ignore sub bar bar' bar equal;\012 ignore sub bar' bar equal equal;\012 sub bar.spacer bar.spacer equal' by bar_bar_equal.liga;\012 sub bar.spacer bar' equal by bar.spacer;\012 sub bar' bar equal by bar.spacer;\012} bar_bar_equal;\012\012lookup bar_bar_greater {\012 ignore sub bar bar' bar greater;\012 ignore sub bar' bar greater greater;\012 ignore sub less bar' bar greater;\012 sub bar.spacer bar.spacer greater' by bar_bar_greater.liga;\012 sub bar.spacer bar' greater by bar.spacer;\012 sub bar' bar greater by bar.spacer;\012} bar_bar_greater;\012\012lookup bar_bar_hyphen {\012 ignore sub bar bar' bar hyphen;\012 ignore sub bar' bar hyphen hyphen;\012 sub bar.spacer bar.spacer hyphen' by bar_bar_hyphen.liga;\012 sub bar.spacer bar' hyphen by bar.spacer;\012 sub bar' bar hyphen by bar.spacer;\012} bar_bar_hyphen;\012\012lookup bar_equal_greater {\012 ignore sub bar bar' equal greater;\012 ignore sub bar' equal greater greater;\012 sub bar.spacer equal.spacer greater' by bar_equal_greater.liga;\012 sub bar.spacer equal' greater by equal.spacer;\012 sub bar' equal greater by bar.spacer;\012} bar_equal_greater;\012\012lookup bar_hyphen_greater {\012 ignore sub bar bar' hyphen greater;\012 ignore sub bar' hyphen greater greater;\012 sub bar.spacer hyphen.spacer greater' by bar_hyphen_greater.liga;\012 sub bar.spacer hyphen' greater by hyphen.spacer;\012 sub bar' hyphen greater by bar.spacer;\012} bar_hyphen_greater;\012\012lookup colon_colon_colon {\012 ignore sub colon colon' colon colon;\012 ignore sub colon' colon colon colon;\012 ignore sub parenleft question colon' colon colon;\012 sub colon.spacer colon.spacer colon' by colon_colon_colon.liga;\012 sub colon.spacer colon' colon by colon.spacer;\012 sub colon' colon colon by colon.spacer;\012} colon_colon_colon;\012\012lookup colon_colon_equal {\012 ignore sub colon colon' colon equal;\012 ignore sub colon' colon equal equal;\012 ignore sub parenleft question colon' colon equal;\012 sub colon.spacer colon.spacer equal' by colon_colon_equal.liga;\012 sub colon.spacer colon' equal by colon.spacer;\012 sub colon' colon equal by colon.spacer;\012} colon_colon_equal;\012\012lookup equal_colon_equal {\012 ignore sub equal equal' colon equal;\012 ignore sub equal' colon equal equal;\012 ignore sub parenleft question equal' colon equal;\012 ignore sub parenleft question less equal' colon equal;\012 sub equal.spacer colon.spacer equal' by equal_colon_equal.liga;\012 sub equal.spacer colon' equal by colon.spacer;\012 sub equal' colon equal by equal.spacer;\012} equal_colon_equal;\012\012lookup equal_equal_equal {\012 ignore sub equal equal' equal equal;\012 ignore sub equal' equal equal equal;\012 ignore sub parenleft question equal' equal equal;\012 ignore sub parenleft question less equal' equal equal;\012 sub equal.spacer equal.spacer equal' by equal_equal_equal.liga;\012 sub equal.spacer equal' equal by equal.spacer;\012 sub equal' equal equal by equal.spacer;\012} equal_equal_equal;\012\012lookup equal_equal_greater {\012 ignore sub equal equal' equal greater;\012 ignore sub equal' equal greater greater;\012 ignore sub parenleft question equal' equal greater;\012 ignore sub parenleft question less equal' equal greater;\012 sub equal.spacer equal.spacer greater' by equal_equal_greater.liga;\012 sub equal.spacer equal' greater by equal.spacer;\012 sub equal' equal greater by equal.spacer;\012} equal_equal_greater;\012\012lookup equal_exclam_equal {\012 ignore sub equal equal' exclam equal;\012 ignore sub equal' exclam equal equal;\012 ignore sub parenleft question equal' exclam equal;\012 ignore sub parenleft question less equal' exclam equal;\012 sub equal.spacer exclam.spacer equal' by equal_exclam_equal.liga;\012 sub equal.spacer exclam' equal by exclam.spacer;\012 sub equal' exclam equal by equal.spacer;\012} equal_exclam_equal;\012\012lookup equal_greater_greater {\012 ignore sub equal equal' greater greater;\012 ignore sub equal' greater greater greater;\012 ignore sub parenleft question equal' greater greater;\012 ignore sub parenleft question less equal' greater greater;\012 sub equal.spacer greater.spacer greater' by equal_greater_greater.liga;\012 sub equal.spacer greater' greater by greater.spacer;\012 sub equal' greater greater by equal.spacer;\012} equal_greater_greater;\012\012lookup equal_less_less {\012 ignore sub equal equal' less less;\012 ignore sub equal' less less less;\012 ignore sub parenleft question equal' less less;\012 ignore sub parenleft question less equal' less less;\012 sub equal.spacer less.spacer less' by equal_less_less.liga;\012 sub equal.spacer less' less by less.spacer;\012 sub equal' less less by equal.spacer;\012} equal_less_less;\012\012lookup equal_slash_equal {\012 ignore sub equal equal' slash equal;\012 ignore sub equal' slash equal equal;\012 ignore sub parenleft question equal' slash equal;\012 ignore sub parenleft question less equal' slash equal;\012 sub equal.spacer slash.spacer equal' by equal_slash_equal.liga;\012 sub equal.spacer slash' equal by slash.spacer;\012 sub equal' slash equal by equal.spacer;\012} equal_slash_equal;\012\012lookup exclam_equal_equal {\012 ignore sub exclam exclam' equal equal;\012 ignore sub exclam' equal equal equal;\012 ignore sub parenleft question exclam' equal equal;\012 ignore sub parenleft question less exclam' equal equal;\012 sub exclam.spacer equal.spacer equal' by exclam_equal_equal.liga;\012 sub exclam.spacer equal' equal by equal.spacer;\012 sub exclam' equal equal by exclam.spacer;\012} exclam_equal_equal;\012\012lookup exclam_exclam_period {\012 ignore sub exclam exclam' exclam period;\012 ignore sub exclam' exclam period period;\012 ignore sub parenleft question exclam' exclam period;\012 ignore sub parenleft question less exclam' exclam period;\012 sub exclam.spacer exclam.spacer period' by exclam_exclam_period.liga;\012 sub exclam.spacer exclam' period by exclam.spacer;\012 sub exclam' exclam period by exclam.spacer;\012} exclam_exclam_period;\012\012lookup greater_equal_greater {\012 ignore sub greater greater' equal greater;\012 ignore sub greater' equal greater greater;\012 sub greater.spacer equal.spacer greater' by greater_equal_greater.liga;\012 sub greater.spacer equal' greater by equal.spacer;\012 sub greater' equal greater by greater.spacer;\012} greater_equal_greater;\012\012lookup greater_greater_equal {\012 ignore sub greater greater' greater equal;\012 ignore sub greater' greater equal equal;\012 sub greater.spacer greater.spacer equal' by greater_greater_equal.liga;\012 sub greater.spacer greater' equal by greater.spacer;\012 sub greater' greater equal by greater.spacer;\012} greater_greater_equal;\012\012lookup greater_greater_greater {\012 ignore sub greater greater' greater greater;\012 ignore sub greater' greater greater greater;\012 ignore sub asterisk greater' greater greater;\012 ignore sub plus greater' greater greater;\012 ignore sub dollar greater' greater greater;\012 sub greater.spacer greater.spacer greater' by greater_greater_greater.liga;\012 sub greater.spacer greater' greater by greater.spacer;\012 sub greater' greater greater by greater.spacer;\012} greater_greater_greater;\012\012lookup greater_greater_hyphen {\012 ignore sub greater greater' greater hyphen;\012 ignore sub greater' greater hyphen hyphen;\012 sub greater.spacer greater.spacer hyphen' by greater_greater_hyphen.liga;\012 sub greater.spacer greater' hyphen by greater.spacer;\012 sub greater' greater hyphen by greater.spacer;\012} greater_greater_hyphen;\012\012lookup greater_hyphen_greater {\012 ignore sub greater greater' hyphen greater;\012 ignore sub greater' hyphen greater greater;\012 sub greater.spacer hyphen.spacer greater' by greater_hyphen_greater.liga;\012 sub greater.spacer hyphen' greater by hyphen.spacer;\012 sub greater' hyphen greater by greater.spacer;\012} greater_hyphen_greater;\012\012lookup hyphen_greater_greater {\012 ignore sub hyphen hyphen' greater greater;\012 ignore sub hyphen' greater greater greater;\012 sub hyphen.spacer greater.spacer greater' by hyphen_greater_greater.liga;\012 sub hyphen.spacer greater' greater by greater.spacer;\012 sub hyphen' greater greater by hyphen.spacer;\012} hyphen_greater_greater;\012\012lookup hyphen_hyphen_greater {\012 ignore sub hyphen hyphen' hyphen greater;\012 ignore sub hyphen' hyphen greater greater;\012 sub hyphen.spacer hyphen.spacer greater' by hyphen_hyphen_greater.liga;\012 sub hyphen.spacer hyphen' greater by hyphen.spacer;\012 sub hyphen' hyphen greater by hyphen.spacer;\012} hyphen_hyphen_greater;\012\012lookup hyphen_hyphen_hyphen {\012 ignore sub hyphen hyphen' hyphen hyphen;\012 ignore sub hyphen' hyphen hyphen hyphen;\012 sub hyphen.spacer hyphen.spacer hyphen' by hyphen_hyphen_hyphen.liga;\012 sub hyphen.spacer hyphen' hyphen by hyphen.spacer;\012 sub hyphen' hyphen hyphen by hyphen.spacer;\012} hyphen_hyphen_hyphen;\012\012lookup hyphen_less_less {\012 ignore sub hyphen hyphen' less less;\012 ignore sub hyphen' less less less;\012 sub hyphen.spacer less.spacer less' by hyphen_less_less.liga;\012 sub hyphen.spacer less' less by less.spacer;\012 sub hyphen' less less by hyphen.spacer;\012} hyphen_less_less;\012\012lookup less_asciitilde_asciitilde {\012 ignore sub less less' asciitilde asciitilde;\012 ignore sub less' asciitilde asciitilde asciitilde;\012 sub less.spacer asciitilde.spacer asciitilde' by less_asciitilde_asciitilde.liga;\012 sub less.spacer asciitilde' asciitilde by asciitilde.spacer;\012 sub less' asciitilde asciitilde by less.spacer;\012} less_asciitilde_asciitilde;\012\012lookup less_asciitilde_greater {\012 ignore sub less less' asciitilde greater;\012 ignore sub less' asciitilde greater greater;\012 sub less.spacer asciitilde.spacer greater' by less_asciitilde_greater.liga;\012 sub less.spacer asciitilde' greater by asciitilde.spacer;\012 sub less' asciitilde greater by less.spacer;\012} less_asciitilde_greater;\012\012lookup less_asterisk_greater {\012 sub less.spacer asterisk.spacer greater' by less_asterisk_greater.liga;\012 sub less.spacer asterisk' greater by asterisk.spacer;\012 sub less' asterisk greater by less.spacer;\012} less_asterisk_greater;\012\012lookup less_bar_bar {\012 ignore sub less less' bar bar;\012 ignore sub less' bar bar bar;\012 ignore sub less' bar bar greater;\012 sub less.spacer bar.spacer bar' by less_bar_bar.liga;\012 sub less.spacer bar' bar by bar.spacer;\012 sub less' bar bar by less.spacer;\012} less_bar_bar;\012\012lookup less_bar_greater {\012 ignore sub less less' bar greater;\012 ignore sub less' bar greater greater;\012 sub less.spacer bar.spacer greater' by less_bar_greater.liga;\012 sub less.spacer bar' greater by bar.spacer;\012 sub less' bar greater by less.spacer;\012} less_bar_greater;\012\012lookup less_dollar_greater {\012 sub less.spacer dollar.spacer greater' by less_dollar_greater.liga;\012 sub less.spacer dollar' greater by dollar.spacer;\012 sub less' dollar greater by less.spacer;\012} less_dollar_greater;\012\012lookup less_equal_bar {\012 ignore sub less less' equal bar;\012 ignore sub less' equal bar bar;\012 ignore sub parenleft question less' equal bar;\012 sub less.spacer equal.spacer bar' by less_equal_bar.liga;\012 sub less.spacer equal' bar by equal.spacer;\012 sub less' equal bar by less.spacer;\012} less_equal_bar;\012\012lookup less_equal_equal {\012 ignore sub less less' equal equal;\012 ignore sub less' equal equal equal;\012 ignore sub parenleft question less' equal equal;\012 sub less.spacer equal.spacer equal' by less_equal_equal.liga;\012 sub less.spacer equal' equal by equal.spacer;\012 sub less' equal equal by less.spacer;\012} less_equal_equal;\012\012lookup less_equal_greater {\012 ignore sub less less' equal greater;\012 ignore sub less' equal greater greater;\012 ignore sub parenleft question less' equal greater;\012 sub less.spacer equal.spacer greater' by less_equal_greater.liga;\012 sub less.spacer equal' greater by equal.spacer;\012 sub less' equal greater by less.spacer;\012} less_equal_greater;\012\012lookup less_equal_less {\012 ignore sub less less' equal less;\012 ignore sub less' equal less less;\012 ignore sub parenleft question less' equal less;\012 sub less.spacer equal.spacer less' by less_equal_less.liga;\012 sub less.spacer equal' less by equal.spacer;\012 sub less' equal less by less.spacer;\012} less_equal_less;\012\012lookup less_hyphen_bar {\012 ignore sub less less' hyphen bar;\012 ignore sub less' hyphen bar bar;\012 sub less.spacer hyphen.spacer bar' by less_hyphen_bar.liga;\012 sub less.spacer hyphen' bar by hyphen.spacer;\012 sub less' hyphen bar by less.spacer;\012} less_hyphen_bar;\012\012lookup less_hyphen_greater {\012 ignore sub less less' hyphen greater;\012 ignore sub less' hyphen greater greater;\012 sub less.spacer hyphen.spacer greater' by less_hyphen_greater.liga;\012 sub less.spacer hyphen' greater by hyphen.spacer;\012 sub less' hyphen greater by less.spacer;\012} less_hyphen_greater;\012\012lookup less_hyphen_hyphen {\012 ignore sub less less' hyphen hyphen;\012 ignore sub less' hyphen hyphen hyphen;\012 sub less.spacer hyphen.spacer hyphen' by less_hyphen_hyphen.liga;\012 sub less.spacer hyphen' hyphen by hyphen.spacer;\012 sub less' hyphen hyphen by less.spacer;\012} less_hyphen_hyphen;\012\012lookup less_hyphen_less {\012 ignore sub less less' hyphen less;\012 ignore sub less' hyphen less less;\012 sub less.spacer hyphen.spacer less' by less_hyphen_less.liga;\012 sub less.spacer hyphen' less by hyphen.spacer;\012 sub less' hyphen less by less.spacer;\012} less_hyphen_less;\012\012lookup less_less_equal {\012 ignore sub less less' less equal;\012 ignore sub less' less equal equal;\012 sub less.spacer less.spacer equal' by less_less_equal.liga;\012 sub less.spacer less' equal by less.spacer;\012 sub less' less equal by less.spacer;\012} less_less_equal;\012\012lookup less_less_hyphen {\012 ignore sub less less' less hyphen;\012 ignore sub less' less hyphen hyphen;\012 sub less.spacer less.spacer hyphen' by less_less_hyphen.liga;\012 sub less.spacer less' hyphen by less.spacer;\012 sub less' less hyphen by less.spacer;\012} less_less_hyphen;\012\012lookup less_less_less {\012 ignore sub less less' less less;\012 ignore sub less' less less less;\012 ignore sub less' less less asterisk;\012 ignore sub less' less less plus;\012 ignore sub less' less less dollar;\012 sub less.spacer less.spacer less' by less_less_less.liga;\012 sub less.spacer less' less by less.spacer;\012 sub less' less less by less.spacer;\012} less_less_less;\012\012lookup less_plus_greater {\012 sub less.spacer plus.spacer greater' by less_plus_greater.liga;\012 sub less.spacer plus' greater by plus.spacer;\012 sub less' plus greater by less.spacer;\012} less_plus_greater;\012\012lookup less_slash_greater {\012 ignore sub less less' slash greater;\012 ignore sub less' slash greater greater;\012 sub less.spacer slash.spacer greater' by less_slash_greater.liga;\012 sub less.spacer slash' greater by slash.spacer;\012 sub less' slash greater by less.spacer;\012} less_slash_greater;\012\012lookup numbersign_numbersign_numbersign {\012 ignore sub numbersign numbersign' numbersign numbersign;\012 ignore sub numbersign' numbersign numbersign numbersign;\012 sub numbersign.spacer numbersign.spacer numbersign' by numbersign_numbersign_numbersign.liga;\012 sub numbersign.spacer numbersign' numbersign by numbersign.spacer;\012 sub numbersign' numbersign numbersign by numbersign.spacer;\012} numbersign_numbersign_numbersign;\012\012lookup numbersign_underscore_parenleft {\012 ignore sub numbersign numbersign' underscore parenleft;\012 ignore sub numbersign' underscore parenleft parenleft;\012 sub numbersign.spacer underscore.spacer parenleft' by numbersign_underscore_parenleft.liga;\012 sub numbersign.spacer underscore' parenleft by underscore.spacer;\012 sub numbersign' underscore parenleft by numbersign.spacer;\012} numbersign_underscore_parenleft;\012\012lookup period_period_less {\012 ignore sub period period' period less;\012 ignore sub period' period less less;\012 sub period.spacer period.spacer less' by period_period_less.liga;\012 sub period.spacer period' less by period.spacer;\012 sub period' period less by period.spacer;\012} period_period_less;\012\012lookup period_period_period {\012 ignore sub period period' period period;\012 ignore sub period' period period period;\012 sub period.spacer period.spacer period' by period_period_period.liga;\012 sub period.spacer period' period by period.spacer;\012 sub period' period period by period.spacer;\012} period_period_period;\012\012lookup plus_plus_plus {\012 ignore sub plus plus' plus plus;\012 ignore sub plus' plus plus plus;\012 sub plus.spacer plus.spacer plus' by plus_plus_plus.liga;\012 sub plus.spacer plus' plus by plus.spacer;\012 sub plus' plus plus by plus.spacer;\012} plus_plus_plus;\012\012lookup slash_equal_equal {\012 ignore sub slash slash' equal equal;\012 ignore sub slash' equal equal equal;\012 sub slash.spacer equal.spacer equal' by slash_equal_equal.liga;\012 sub slash.spacer equal' equal by equal.spacer;\012 sub slash' equal equal by slash.spacer;\012} slash_equal_equal;\012\012lookup slash_slash_slash {\012 ignore sub slash slash' slash slash;\012 ignore sub slash' slash slash slash;\012 sub slash.spacer slash.spacer slash' by slash_slash_slash.liga;\012 sub slash.spacer slash' slash by slash.spacer;\012 sub slash' slash slash by slash.spacer;\012} slash_slash_slash;\012\012lookup underscore_bar_underscore {\012 ignore sub underscore underscore' bar underscore;\012 ignore sub underscore' bar underscore underscore;\012 sub underscore.spacer bar.spacer underscore' by underscore_bar_underscore.liga;\012 sub underscore.spacer bar' underscore by bar.spacer;\012 sub underscore' bar underscore by underscore.spacer;\012} underscore_bar_underscore;\012\012lookup w_w_w {\012 ignore sub w w' w w;\012 ignore sub w' w w w;\012 sub w.spacer w.spacer w' by w_w_w.liga;\012 sub w.spacer w' w by w.spacer;\012 sub w' w w by w.spacer;\012} w_w_w;\012\012lookup F_l {\012 sub F.spacer l' by F_l.liga;\012 sub F' l by F.spacer;\012} F_l;\012\012lookup T_l {\012 sub T.spacer l' by T_l.liga;\012 sub T' l by T.spacer;\012} T_l;\012\012lookup ampersand_ampersand {\012 ignore sub ampersand ampersand' ampersand;\012 ignore sub ampersand' ampersand ampersand;\012 sub ampersand.spacer ampersand' by ampersand_ampersand.liga;\012 sub ampersand' ampersand by ampersand.spacer;\012} ampersand_ampersand;\012\012lookup asciicircum_equal {\012 ignore sub asciicircum asciicircum' equal;\012 ignore sub asciicircum' equal equal;\012 sub asciicircum.spacer equal' by asciicircum_equal.liga;\012 sub asciicircum' equal by asciicircum.spacer;\012} asciicircum_equal;\012\012lookup asciitilde_asciitilde {\012 ignore sub asciitilde asciitilde' asciitilde;\012 ignore sub asciitilde' asciitilde asciitilde;\012 sub asciitilde.spacer asciitilde' by asciitilde_asciitilde.liga;\012 sub asciitilde' asciitilde by asciitilde.spacer;\012} asciitilde_asciitilde;\012\012lookup asciitilde_at {\012 ignore sub asciitilde asciitilde' at;\012 ignore sub asciitilde' at at;\012 sub asciitilde.spacer at' by asciitilde_at.liga;\012 sub asciitilde' at by asciitilde.spacer;\012} asciitilde_at;\012\012lookup asciitilde_equal {\012 ignore sub asciitilde asciitilde' equal;\012 ignore sub asciitilde' equal equal;\012 sub asciitilde.spacer equal' by asciitilde_equal.liga;\012 sub asciitilde' equal by asciitilde.spacer;\012} asciitilde_equal;\012\012lookup asciitilde_greater {\012 ignore sub asciitilde asciitilde' greater;\012 ignore sub asciitilde' greater greater;\012 sub asciitilde.spacer greater' by asciitilde_greater.liga;\012 sub asciitilde' greater by asciitilde.spacer;\012} asciitilde_greater;\012\012lookup asciitilde_hyphen {\012 ignore sub asciitilde asciitilde' hyphen;\012 ignore sub asciitilde' hyphen hyphen;\012 sub asciitilde.spacer hyphen' by asciitilde_hyphen.liga;\012 sub asciitilde' hyphen by asciitilde.spacer;\012} asciitilde_hyphen;\012\012lookup asterisk_asterisk {\012 ignore sub asterisk asterisk' asterisk;\012 ignore sub asterisk' asterisk asterisk;\012 ignore sub slash asterisk' asterisk;\012 ignore sub asterisk' asterisk slash;\012 sub asterisk.spacer asterisk' by asterisk_asterisk.liga;\012 sub asterisk' asterisk by asterisk.spacer;\012} asterisk_asterisk;\012\012lookup asterisk_greater {\012 ignore sub asterisk asterisk' greater;\012 ignore sub asterisk' greater greater;\012 sub asterisk.spacer greater' by asterisk_greater.liga;\012 sub asterisk' greater by asterisk.spacer;\012} asterisk_greater;\012\012lookup asterisk_slash {\012 ignore sub asterisk asterisk' slash;\012 ignore sub asterisk' slash slash;\012 ignore sub slash asterisk' slash;\012 ignore sub asterisk' slash asterisk;\012 sub asterisk.spacer slash' by asterisk_slash.liga;\012 sub asterisk' slash by asterisk.spacer;\012} asterisk_slash;\012\012lookup bar_bar {\012 ignore sub bar bar' bar;\012 ignore sub bar' bar bar;\012 sub bar.spacer bar' by bar_bar.liga;\012 sub bar' bar by bar.spacer;\012} bar_bar;\012\012lookup bar_braceright {\012 ignore sub bar bar' braceright;\012 ignore sub bar' braceright braceright;\012 ignore sub braceleft bar' braceright;\012 sub bar.spacer braceright' by bar_braceright.liga;\012 sub bar' braceright by bar.spacer;\012} bar_braceright;\012\012lookup bar_bracketright {\012 ignore sub bar bar' bracketright;\012 ignore sub bar' bracketright bracketright;\012 ignore sub bracketleft bar' bracketright;\012 sub bar.spacer bracketright' by bar_bracketright.liga;\012 sub bar' bracketright by bar.spacer;\012} bar_bracketright;\012\012lookup bar_equal {\012 ignore sub bar bar' equal;\012 ignore sub bar' equal equal;\012 sub bar.spacer equal' by bar_equal.liga;\012 sub bar' equal by bar.spacer;\012} bar_equal;\012\012lookup bar_greater {\012 ignore sub bar bar' greater;\012 ignore sub bar' greater greater;\012 sub bar.spacer greater' by bar_greater.liga;\012 sub bar' greater by bar.spacer;\012} bar_greater;\012\012lookup bar_hyphen {\012 ignore sub bar bar' hyphen;\012 ignore sub bar' hyphen hyphen;\012 ignore sub bar' hyphen bar;\012 sub bar.spacer hyphen' by bar_hyphen.liga;\012 sub bar' hyphen by bar.spacer;\012} bar_hyphen;\012\012lookup braceleft_bar {\012 ignore sub braceleft braceleft' bar;\012 ignore sub braceleft' bar bar;\012 ignore sub braceleft' bar braceright;\012 sub braceleft.spacer bar' by braceleft_bar.liga;\012 sub braceleft' bar by braceleft.spacer;\012} braceleft_bar;\012\012lookup bracketleft_bar {\012 ignore sub bracketleft bracketleft' bar;\012 ignore sub bracketleft' bar bar;\012 ignore sub bracketleft' bar bracketright;\012 sub bracketleft.spacer bar' by bracketleft_bar.liga;\012 sub bracketleft' bar by bracketleft.spacer;\012} bracketleft_bar;\012\012lookup bracketright_numbersign {\012 ignore sub bracketright bracketright' numbersign;\012 ignore sub bracketright' numbersign numbersign;\012 sub bracketright.spacer numbersign' by bracketright_numbersign.liga;\012 sub bracketright' numbersign by bracketright.spacer;\012} bracketright_numbersign;\012\012lookup colon_colon {\012 ignore sub colon colon' colon;\012 ignore sub colon' colon colon;\012 ignore sub parenleft question colon' colon;\012 sub colon.spacer colon' by colon_colon.liga;\012 sub colon' colon by colon.spacer;\012} colon_colon;\012\012lookup colon_equal {\012 ignore sub colon colon' equal;\012 ignore sub colon' equal equal;\012 ignore sub parenleft question colon' equal;\012 sub colon.spacer equal' by colon_equal.liga;\012 sub colon' equal by colon.spacer;\012} colon_equal;\012\012lookup colon_greater {\012 ignore sub colon colon' greater;\012 ignore sub colon' greater greater;\012 ignore sub parenleft question colon' greater;\012 ignore sub colon' greater equal;\012 sub colon.spacer greater' by colon_greater.liga;\012 sub colon' greater by colon.spacer;\012} colon_greater;\012\012lookup colon_less {\012 ignore sub colon colon' less;\012 ignore sub colon' less less;\012 ignore sub parenleft question colon' less;\012 sub colon.spacer less' by colon_less.liga;\012 sub colon' less by colon.spacer;\012} colon_less;\012\012lookup dollar_greater {\012 ignore sub dollar dollar' greater;\012 ignore sub dollar' greater greater;\012 sub dollar.spacer greater' by dollar_greater.liga;\012 sub dollar' greater by dollar.spacer;\012} dollar_greater;\012\012lookup equal_equal {\012 ignore sub equal equal' equal;\012 ignore sub equal' equal equal;\012 ignore sub parenleft question equal' equal;\012 ignore sub parenleft question less equal' equal;\012 sub equal.spacer equal' by equal_equal.liga;\012 sub equal' equal by equal.spacer;\012} equal_equal;\012\012lookup equal_greater {\012 ignore sub equal equal' greater;\012 ignore sub equal' greater greater;\012 ignore sub parenleft question equal' greater;\012 ignore sub parenleft question less equal' greater;\012 sub equal.spacer greater' by equal_greater.liga;\012 sub equal' greater by equal.spacer;\012} equal_greater;\012\012lookup exclam_equal {\012 ignore sub exclam exclam' equal;\012 ignore sub exclam' equal equal;\012 ignore sub parenleft question exclam' equal;\012 ignore sub parenleft question less exclam' equal;\012 sub exclam.spacer equal' by exclam_equal.liga;\012 sub exclam' equal by exclam.spacer;\012} exclam_equal;\012\012lookup exclam_exclam {\012 ignore sub exclam exclam' exclam;\012 ignore sub exclam' exclam exclam;\012 ignore sub parenleft question exclam' exclam;\012 ignore sub parenleft question less exclam' exclam;\012 sub exclam.spacer exclam' by exclam_exclam.liga;\012 sub exclam' exclam by exclam.spacer;\012} exclam_exclam;\012\012lookup f_l {\012 sub f.spacer l' by f_l.liga;\012 sub f' l by f.spacer;\012} f_l;\012\012lookup greater_colon {\012 ignore sub greater greater' colon;\012 ignore sub greater' colon colon;\012 sub greater.spacer colon' by greater_colon.liga;\012 sub greater' colon by greater.spacer;\012} greater_colon;\012\012lookup greater_equal {\012 ignore sub greater greater' equal;\012 ignore sub greater' equal equal;\012 ignore sub greater' equal less;\012 sub greater.spacer equal' by greater_equal.liga;\012 sub greater' equal by greater.spacer;\012} greater_equal;\012\012lookup greater_greater {\012 ignore sub greater greater' greater;\012 ignore sub greater' greater greater;\012 ignore sub asterisk greater' greater;\012 ignore sub plus greater' greater;\012 ignore sub dollar greater' greater;\012 sub greater.spacer greater' by greater_greater.liga;\012 sub greater' greater by greater.spacer;\012} greater_greater;\012\012lookup greater_hyphen {\012 ignore sub greater greater' hyphen;\012 ignore sub greater' hyphen hyphen;\012 sub greater.spacer hyphen' by greater_hyphen.liga;\012 sub greater' hyphen by greater.spacer;\012} greater_hyphen;\012\012lookup hyphen_asciitilde {\012 ignore sub hyphen hyphen' asciitilde;\012 ignore sub hyphen' asciitilde asciitilde;\012 sub hyphen.spacer asciitilde' by hyphen_asciitilde.liga;\012 sub hyphen' asciitilde by hyphen.spacer;\012} hyphen_asciitilde;\012\012lookup hyphen_bar {\012 ignore sub hyphen hyphen' bar;\012 ignore sub hyphen' bar bar;\012 ignore sub bar hyphen' bar;\012 sub hyphen.spacer bar' by hyphen_bar.liga;\012 sub hyphen' bar by hyphen.spacer;\012} hyphen_bar;\012\012lookup hyphen_greater {\012 ignore sub hyphen hyphen' greater;\012 ignore sub hyphen' greater greater;\012 sub hyphen.spacer greater' by hyphen_greater.liga;\012 sub hyphen' greater by hyphen.spacer;\012} hyphen_greater;\012\012lookup hyphen_hyphen {\012 ignore sub hyphen hyphen' hyphen;\012 ignore sub hyphen' hyphen hyphen;\012 sub hyphen.spacer hyphen' by hyphen_hyphen.liga;\012 sub hyphen' hyphen by hyphen.spacer;\012} hyphen_hyphen;\012\012lookup hyphen_less {\012 ignore sub hyphen hyphen' less;\012 ignore sub hyphen' less less;\012 sub hyphen.spacer less' by hyphen_less.liga;\012 sub hyphen' less by hyphen.spacer;\012} hyphen_less;\012\012lookup less_asciitilde {\012 ignore sub less less' asciitilde;\012 ignore sub less' asciitilde asciitilde;\012 sub less.spacer asciitilde' by less_asciitilde.liga;\012 sub less' asciitilde by less.spacer;\012} less_asciitilde;\012\012lookup less_asterisk {\012 ignore sub less less' asterisk;\012 ignore sub less' asterisk asterisk;\012 sub less.spacer asterisk' by less_asterisk.liga;\012 sub less' asterisk by less.spacer;\012} less_asterisk;\012\012lookup less_bar {\012 ignore sub less less' bar;\012 ignore sub less' bar bar;\012 sub less.spacer bar' by less_bar.liga;\012 sub less' bar by less.spacer;\012} less_bar;\012\012lookup less_colon {\012 ignore sub less less' colon;\012 ignore sub less' colon colon;\012 sub less.spacer colon' by less_colon.liga;\012 sub less' colon by less.spacer;\012} less_colon;\012\012lookup less_dollar {\012 ignore sub less less' dollar;\012 ignore sub less' dollar dollar;\012 sub less.spacer dollar' by less_dollar.liga;\012 sub less' dollar by less.spacer;\012} less_dollar;\012\012lookup less_equal {\012 ignore sub less less' equal;\012 ignore sub less' equal equal;\012 ignore sub parenleft question less' equal;\012 sub less.spacer equal' by less_equal.liga;\012 sub less' equal by less.spacer;\012} less_equal;\012\012lookup less_greater {\012 ignore sub less less' greater;\012 ignore sub less' greater greater;\012 sub less.spacer greater' by less_greater.liga;\012 sub less' greater by less.spacer;\012} less_greater;\012\012lookup less_hyphen {\012 ignore sub less less' hyphen;\012 ignore sub less' hyphen hyphen;\012 sub less.spacer hyphen' by less_hyphen.liga;\012 sub less' hyphen by less.spacer;\012} less_hyphen;\012\012lookup less_less {\012 ignore sub less less' less;\012 ignore sub less' less less;\012 ignore sub less' less asterisk;\012 ignore sub less' less plus;\012 ignore sub less' less dollar;\012 sub less.spacer less' by less_less.liga;\012 sub less' less by less.spacer;\012} less_less;\012\012lookup less_plus {\012 ignore sub less less' plus;\012 ignore sub less' plus plus;\012 sub less.spacer plus' by less_plus.liga;\012 sub less' plus by less.spacer;\012} less_plus;\012\012lookup less_slash {\012 ignore sub less less' slash;\012 ignore sub less' slash slash;\012 sub less.spacer slash' by less_slash.liga;\012 sub less' slash by less.spacer;\012} less_slash;\012\012lookup numbersign_braceleft {\012 ignore sub numbersign numbersign' braceleft;\012 ignore sub numbersign' braceleft braceleft;\012 sub numbersign.spacer braceleft' by numbersign_braceleft.liga;\012 sub numbersign' braceleft by numbersign.spacer;\012} numbersign_braceleft;\012\012lookup numbersign_bracketleft {\012 ignore sub numbersign numbersign' bracketleft;\012 ignore sub numbersign' bracketleft bracketleft;\012 sub numbersign.spacer bracketleft' by numbersign_bracketleft.liga;\012 sub numbersign' bracketleft by numbersign.spacer;\012} numbersign_bracketleft;\012\012lookup numbersign_colon {\012 ignore sub numbersign numbersign' colon;\012 ignore sub numbersign' colon colon;\012 sub numbersign.spacer colon' by numbersign_colon.liga;\012 sub numbersign' colon by numbersign.spacer;\012} numbersign_colon;\012\012lookup numbersign_equal {\012 ignore sub numbersign numbersign' equal;\012 ignore sub numbersign' equal equal;\012 sub numbersign.spacer equal' by numbersign_equal.liga;\012 sub numbersign' equal by numbersign.spacer;\012} numbersign_equal;\012\012lookup numbersign_exclam {\012 ignore sub numbersign numbersign' exclam;\012 ignore sub numbersign' exclam exclam;\012 sub numbersign.spacer exclam' by numbersign_exclam.liga;\012 sub numbersign' exclam by numbersign.spacer;\012} numbersign_exclam;\012\012lookup numbersign_numbersign {\012 ignore sub numbersign numbersign' numbersign;\012 ignore sub numbersign' numbersign numbersign;\012 sub numbersign.spacer numbersign' by numbersign_numbersign.liga;\012 sub numbersign' numbersign by numbersign.spacer;\012} numbersign_numbersign;\012\012lookup numbersign_parenleft {\012 ignore sub numbersign numbersign' parenleft;\012 ignore sub numbersign' parenleft parenleft;\012 sub numbersign.spacer parenleft' by numbersign_parenleft.liga;\012 sub numbersign' parenleft by numbersign.spacer;\012} numbersign_parenleft;\012\012lookup numbersign_question {\012 ignore sub numbersign numbersign' question;\012 ignore sub numbersign' question question;\012 sub numbersign.spacer question' by numbersign_question.liga;\012 sub numbersign' question by numbersign.spacer;\012} numbersign_question;\012\012lookup numbersign_underscore {\012 ignore sub numbersign numbersign' underscore;\012 ignore sub numbersign' underscore underscore;\012 sub numbersign.spacer underscore' by numbersign_underscore.liga;\012 sub numbersign' underscore by numbersign.spacer;\012} numbersign_underscore;\012\012lookup percent_percent {\012 ignore sub percent percent' percent;\012 ignore sub percent' percent percent;\012 sub percent.spacer percent' by percent_percent.liga;\012 sub percent' percent by percent.spacer;\012} percent_percent;\012\012lookup period_equal {\012 ignore sub period period' equal;\012 ignore sub period' equal equal;\012 sub period.spacer equal' by period_equal.liga;\012 sub period' equal by period.spacer;\012} period_equal;\012\012lookup period_hyphen {\012 ignore sub period period' hyphen;\012 ignore sub period' hyphen hyphen;\012 sub period.spacer hyphen' by period_hyphen.liga;\012 sub period' hyphen by period.spacer;\012} period_hyphen;\012\012lookup period_period {\012 ignore sub period period' period;\012 ignore sub period' period period;\012 sub period.spacer period' by period_period.liga;\012 sub period' period by period.spacer;\012} period_period;\012\012lookup period_question {\012 ignore sub period period' question;\012 ignore sub period' question question;\012 sub period.spacer question' by period_question.liga;\012 sub period' question by period.spacer;\012} period_question;\012\012lookup plus_greater {\012 ignore sub plus plus' greater;\012 ignore sub plus' greater greater;\012 sub plus.spacer greater' by plus_greater.liga;\012 sub plus' greater by plus.spacer;\012} plus_greater;\012\012lookup plus_plus {\012 ignore sub plus plus' plus;\012 ignore sub plus' plus plus;\012 sub plus.spacer plus' by plus_plus.liga;\012 sub plus' plus by plus.spacer;\012} plus_plus;\012\012lookup question_colon {\012 ignore sub question question' colon;\012 ignore sub question' colon colon;\012 ignore sub parenleft question' colon;\012 sub question.spacer colon' by question_colon.liga;\012 sub question' colon by question.spacer;\012} question_colon;\012\012lookup question_equal {\012 ignore sub question question' equal;\012 ignore sub question' equal equal;\012 ignore sub parenleft question' equal;\012 sub question.spacer equal' by question_equal.liga;\012 sub question' equal by question.spacer;\012} question_equal;\012\012lookup question_period {\012 ignore sub question question' period;\012 ignore sub question' period period;\012 sub question.spacer period' by question_period.liga;\012 sub question' period by question.spacer;\012} question_period;\012\012lookup question_question {\012 ignore sub question question' question;\012 ignore sub question' question question;\012 sub question.spacer question' by question_question.liga;\012 sub question' question by question.spacer;\012} question_question;\012\012lookup semicolon_semicolon {\012 ignore sub semicolon semicolon' semicolon;\012 ignore sub semicolon' semicolon semicolon;\012 sub semicolon.spacer semicolon' by semicolon_semicolon.liga;\012 sub semicolon' semicolon by semicolon.spacer;\012} semicolon_semicolon;\012\012lookup slash_asterisk {\012 ignore sub slash slash' asterisk;\012 ignore sub slash' asterisk asterisk;\012 ignore sub slash' asterisk slash;\012 ignore sub asterisk slash' asterisk;\012 sub slash.spacer asterisk' by slash_asterisk.liga;\012 sub slash' asterisk by slash.spacer;\012} slash_asterisk;\012\012lookup slash_equal {\012 ignore sub slash slash' equal;\012 ignore sub slash' equal equal;\012 sub slash.spacer equal' by slash_equal.liga;\012 sub slash' equal by slash.spacer;\012} slash_equal;\012\012lookup slash_greater {\012 ignore sub slash slash' greater;\012 ignore sub slash' greater greater;\012 sub slash.spacer greater' by slash_greater.liga;\012 sub slash' greater by slash.spacer;\012} slash_greater;\012\012lookup slash_slash {\012 ignore sub slash slash' slash;\012 ignore sub slash' slash slash;\012 sub slash.spacer slash' by slash_slash.liga;\012 sub slash' slash by slash.spacer;\012} slash_slash;\012\012lookup underscore_underscore {\012 ignore sub underscore underscore' underscore;\012 ignore sub underscore' underscore underscore;\012 sub underscore.spacer underscore' by underscore_underscore.liga;\012 sub underscore' underscore by underscore.spacer;\012} underscore_underscore;\012### end of generated calt\012\012sub less asciitilde' greater by asciitilde_asciitilde.liga;\012\012lookup lowercase_hyphen {\012 ignore sub @Tall \\hyphen' @Lowercase;\012 ignore sub @Lowercase \\hyphen' @Tall; \012 sub \\hyphen' @Lowercase by \\hyphen.lc;\012 sub @Lowercase \\hyphen' by \\hyphen.lc;\012} lowercase_hyphen;\012\012lookup lowercase_plus {\012 ignore sub @Tall \\plus' @Lowercase;\012 ignore sub @Lowercase \\plus' @Tall;\012 sub \\plus' @Lowercase by \\plus.lc;\012 sub @Lowercase \\plus' by \\plus.lc;\012} lowercase_plus;\012\012lookup lowercase_asterisk {\012 ignore sub @Tall \\asterisk' @Lowercase;\012 ignore sub @Lowercase \\asterisk' @Tall;\012 sub \\asterisk' @Lowercase by \\asterisk.lc;\012 sub @Lowercase \\asterisk' by \\asterisk.lc;\012} lowercase_asterisk;\012\012lookup uppercase_colon {\012 ignore sub @Tall \\colon' @Lowercase;\012 ignore sub @Lowercase \\colon' @Tall;\012 sub @Tall \\colon' by \\colon.uc;\012 sub \\colon' @Tall by \\colon.uc;\012} uppercase_colon;\012\012# 738\012lookup slash_backslash {\012 ignore sub @NotSpace slash' backslash;\012 ignore sub slash' backslash @NotSpace;\012 sub slash.spacer backslash' by slash_backslash.liga;\012 sub slash' backslash by slash.spacer;\012} slash_backslash;\012\012lookup backslash_slash {\012 ignore sub @NotSpace backslash' slash;\012 ignore sub backslash' slash @NotSpace;\012 sub backslash.spacer slash' by backslash_slash.liga;\012 sub backslash' slash by backslash.spacer;\012} backslash_slash;\012\012### 795\012\012sub [f i.salt_low j.salt_low] [i j]' by [i.salt_low j.salt_low];\012\012###\012sub \\zero \\x' @HexDigit by \\x.multiply;\012sub @Digit \\x' @Digit by \\x.multiply;\012# sub \\bracketleft [\\x \\X]' \\bracketright by \\x.multiply;\012# sub \\bracketleft [\\v \\V]' \\bracketright by \\checkmark;\012\012###\012\012lookup caltGreekUCdiph {\012 sub @GreekUCdiphIOTA Iota' by Iotadieresis;\012 sub @GreekUCdiphUPSILON Upsilon' by Upsilondieresis;\012} caltGreekUCdiph;\012\012lookup caltGreekUC {\012 sub @GreekUCAcc' @GreekUC by @GreekUCcalt;\012 sub @GreekUC @GreekUCAcc' by @GreekUCcalt;\012 sub @GreekUCAcc' space @GreekUC by @GreekUCcalt;\012 sub @GreekUC space @GreekUCAcc' by @GreekUCcalt;\012} caltGreekUC;\012"; name = calt; }, { @@ -232,7 +232,7 @@ name = ss02; notes = "Name: Less Than/Greater Than with horizontal bar"; }, { -code = "sub ampersand by ampersand.ss03;\012\012sub ampersand_ampersand.liga by ampersand.ss03;\012sub LIG' ampersand.ss03 by ampersand.ss03;"; +code = "sub ampersand by ampersand.ss03;\012\012sub ampersand_ampersand.liga by ampersand.ss03;\012sub ampersand.spacer' ampersand.ss03 by ampersand.ss03;"; name = ss03; notes = "Name: Traditional Ampersand"; }, @@ -243,7 +243,7 @@ name = ss04; notes = "Name: Lightweight Dollar Sign"; }, { -code = "sub at by at.ss06;\012sub LIG' asciitilde_at.liga by asciitilde;\012sub asciitilde asciitilde_at.liga' by at.ss06;"; +code = "sub at by at.ss06;\012sub asciitilde.spacer' asciitilde_at.liga by asciitilde;\012sub asciitilde asciitilde_at.liga' by at.ss06;"; name = ss05; notes = "Name: Traditional At sign"; }, @@ -113642,21 +113642,6 @@ width = 1200; unicode = E0B3; }, { -color = 3; -glyphname = LIG; -lastChange = "2019-03-25 21:13:22 +0000"; -layers = ( -{ -layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; -width = 1200; -}, -{ -layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; -width = 1200; -} -); -}, -{ color = 9; export = 0; glyphname = "TseHelper-cy"; @@ -114985,6 +114970,486 @@ layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; width = 1200; } ); +}, +{ +color = 3; +glyphname = ampersand.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = asciicircum.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = asciitilde.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = asterisk.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = at.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = bar.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = braceleft.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = braceright.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = bracketleft.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = bracketright.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = colon.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = dollar.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = equal.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = exclam.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = f.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = F.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = greater.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = hyphen.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = l.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = less.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = numbersign.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = parenleft.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = percent.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = period.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = plus.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = question.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = semicolon.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = slash.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = T.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = underscore.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = w.spacer; +lastChange = "2020-03-23 22:10:37 +0000"; +layers = ( +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +}, +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +} +); +}, +{ +color = 3; +glyphname = backslash.spacer; +lastChange = "2020-03-23 22:55:00 +0000"; +layers = ( +{ +layerId = "B67F0F2D-EC95-4CB8-966E-23AE86958A69"; +width = 1200; +}, +{ +layerId = "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"; +width = 1200; +} +); } ); instances = ( diff --git a/clojure/regen_calt.clj b/clojure/fira_code/calt.clj similarity index 70% rename from clojure/regen_calt.clj rename to clojure/fira_code/calt.clj index 7f1a85b..36c40d5 100755 --- a/clojure/regen_calt.clj +++ b/clojure/fira_code/calt.clj @@ -1,9 +1,11 @@ -;; clj -m regen-calt - -(ns regen-calt +(ns fira-code.calt (:require - [clojure.string :as str] - [glyphs :as glyphs])) + [clojure.string :as str] + [fira-code.coll :as coll] + [fira-code.glyphs :as glyphs] + [fira-code.time :as time] + [flatland.ordered.map :refer [ordered-map]])) + ;; No ligature should follow those sequences (def ignore-prefixes @@ -142,8 +144,8 @@ " ignore sub 1' 2 2;\n")) (gen-ignore-prefixes liga) (get ignores liga) - " sub LIG 2' by 1_2.liga;\n" - " sub 1' 2 by LIG;\n" + " sub 1.spacer 2' by 1_2.liga;\n" + " sub 1' 2 by 1.spacer;\n" "} 1_2;") #"\d" {"1" a "2" b})) 3 (let [[a b c] liga] @@ -154,9 +156,9 @@ " ignore sub 1' 2 3 3;\n")) (gen-ignore-prefixes liga) (get ignores liga) - " sub LIG LIG 3' by 1_2_3.liga;\n" - " sub LIG 2' 3 by LIG;\n" - " sub 1' 2 3 by LIG;\n" + " sub 1.spacer 2.spacer 3' by 1_2_3.liga;\n" + " sub 1.spacer 2' 3 by 2.spacer;\n" + " sub 1' 2 3 by 1.spacer;\n" "} 1_2_3;") #"\d" {"1" a "2" b "3" c})) 4 (let [[a b c d] liga] @@ -167,24 +169,13 @@ " ignore sub 1' 2 3 4 4;\n")) (gen-ignore-prefixes liga) (get ignores liga) - " sub LIG LIG LIG 4' by 1_2_3_4.liga;\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" + " sub 1.spacer 2.spacer 3.spacer 4' by 1_2_3_4.liga;\n" + " sub 1.spacer 2.spacer 3' 4 by 3.spacer;\n" + " sub 1.spacer 2' 3 4 by 2.spacer;\n" + " sub 1' 2 3 4 by 1.spacer;\n" "} 1_2_3_4;") #"\d" {"1" a "2" b "3" c "4" d})))) -(defn index-of [pred xs] - (reduce (fn [i x] (if (pred x) (reduced i) (inc i))) 0 xs)) - -(defn replace-calt [font calt] - (let [features (:features font) - idx (index-of #(= "calt" (:name %)) features) - code (get-in features [idx :code]) - code' (str/replace code - #"### start of generated calt\n[^#]+\n### end of generated calt\n" - (str "### start of generated calt\n" calt "\n### end of generated calt\n"))] - (assoc-in font [:features idx :code] code'))) (defn compare-ligas [l1 l2] (cond @@ -192,24 +183,26 @@ (< (count l1) (count l2)) 1 :else (compare l1 l2))) -(defn -main [& args] - (let [path (or (first args) "FiraCode.glyphs") - font (glyphs/load path) - ligas (for [g (:glyphs font) - :let [name (:glyphname g)] - :when (str/ends-with? name ".liga") - :when (not= "0" (:export g)) - :let [[_ liga] (re-matches #"([A-Za-z_]+)\.liga" name)]] - (str/split liga #"_")) ;; [ ["dash" "greater" "greater"] ... ] - calt (->> ligas (remove manual?) (sort compare-ligas) (map liga->rule) (str/join "\n\n")) - font' (replace-calt font calt)] - (glyphs/save! path font') +(defn replace-calt [font ligas] + (let [ligas' (->> ligas + (remove manual?) + (sort compare-ligas)) + calt (->> ligas' + (map liga->rule) + (str/join "\n\n")) + glyphs (map #(str (str/join "_" %) ".liga") ligas') + counts (coll/group-by-to count count ligas')] - (println "Total ligatures count:" (count ligas)) - (println " " (->> ligas - (group-by count) - (sort-by first) - (map (fn [[k v]] (str (count v) (case k 2 " pairs", 3 " triples", 4 " quadruples")))) - (str/join ", "))) - (println))) \ No newline at end of file + (println " generated calt:" + (str/join " " glyphs) + (str + "(" (get counts 2) " pairs, " + (get counts 3) " triples, " + (get counts 4) " quadruples, " + (count ligas') " total)")) + + (glyphs/update-code font :features "calt" + #(str/replace % + #"### start of generated calt\n[^#]+\n### end of generated calt\n" + (str "### start of generated calt\n" calt "\n### end of generated calt\n"))))) diff --git a/clojure/fira_code/coll.clj b/clojure/fira_code/coll.clj new file mode 100644 index 0000000..30d41c4 --- /dev/null +++ b/clojure/fira_code/coll.clj @@ -0,0 +1,15 @@ +(ns fira-code.coll) + + +(defn index-of [pred xs] + (let [res (reduce (fn [i x] (if (pred x) (reduced i) (inc i))) 0 xs)] + (assert (< res (count xs)) "Nothing found") + res)) + + +(defn group-by-to [key-fn value-fn xs] + (reduce-kv + (fn [m k vs] + (assoc m k (value-fn vs))) + {} + (group-by key-fn xs))) \ No newline at end of file diff --git a/clojure/glyphs.clj b/clojure/fira_code/glyphs.clj similarity index 92% rename from clojure/glyphs.clj rename to clojure/fira_code/glyphs.clj index fd36520..27ec8fb 100755 --- a/clojure/glyphs.clj +++ b/clojure/fira_code/glyphs.clj @@ -1,9 +1,10 @@ -(ns glyphs +(ns fira-code.glyphs (:refer-clojure :exclude [load]) (:require [clojure.java.io :as io] [clojure.string :as str] [fipp.edn :as fipp] + [fira-code.coll :as coll] [flatland.ordered.map :refer [ordered-map]])) (def ^:dynamic *str) @@ -137,11 +138,11 @@ ; (-> (slurp "FiraCode.glyphs") parse serialize (->> (spit "FiraCode_saved.glyphs"))) (defn load [path] - (println "Parsing" path "...") + (println (str "Parsing '" path "'...")) (parse (slurp path))) (defn save! [path font] - (println "Saving" path "...") + (println (str "Saving '" path "'...")) (spit path (serialize font))) (defn -main [& args] @@ -150,8 +151,16 @@ (binding [*out* os] (fipp/pprint font {:width 200}))))) -(def weights {:Regular "UUID0" - :Bold "BF448B58-7A35-489E-A1C9-12628F60690C"}) + +(defn update-code [font key name f & args] + (let [idx (coll/index-of #(= (:name %) name) (get font key))] + (apply update-in font [key idx :code] f args))) + + +(def weights + {:Light "B67F0F2D-EC95-4CB8-966E-23AE86958A69" + :Regular "UUID0" + :Bold "4B7A3BAF-EAD8-4024-9BEA-BB1DE86CFCFA"}) (defn layer [l] { :id (case (:layerId l) diff --git a/clojure/fira_code/main.clj b/clojure/fira_code/main.clj new file mode 100644 index 0000000..c077053 --- /dev/null +++ b/clojure/fira_code/main.clj @@ -0,0 +1,27 @@ +(ns fira-code.main + (:require + [clojure.string :as str] + [fira-code.calt :as calt] + [fira-code.coll :as coll] + [fira-code.glyphs :as glyphs] + [fira-code.not-space :as not-space] + [fira-code.spacers :as spacers] + [fira-code.time :as time] + [flatland.ordered.map :refer [ordered-map]])) + + +(defn -main [& args] + (let [path (or (first args) "FiraCode.glyphs") + font (glyphs/load path) + ligas (for [g (:glyphs font) + :let [name (:glyphname g)] + :when (str/ends-with? name ".liga") + :when (not= "0" (:export g)) + :let [[_ liga] (re-matches #"([A-Za-z_]+)\.liga" name)]] + (str/split liga #"_")) ;; [ ["dash" "greater" "greater"] ... ] + font' (-> font + (calt/replace-calt ligas) + (spacers/add-spacers ligas) + (not-space/regen-not-space))] + (glyphs/save! path font') + (println))) \ No newline at end of file diff --git a/clojure/fira_code/not_space.clj b/clojure/fira_code/not_space.clj new file mode 100644 index 0000000..0657fe8 --- /dev/null +++ b/clojure/fira_code/not_space.clj @@ -0,0 +1,14 @@ +(ns fira-code.not-space + (:require + [clojure.string :as str] + [fira-code.glyphs :as glyphs])) + + +(defn regen-not-space [font] + (let [not-spaces (->> (:glyphs font) + (remove #(re-find #"^\.|space$|space\." (:glyphname %))) + (remove #(= "0" (:export %))) + (map :glyphname) + (sort))] + (println " regenerated NotSpace:" (count not-spaces) "glyphs") + (glyphs/update-code font :classes "NotSpace" (constantly (str/join " " not-spaces))))) \ No newline at end of file diff --git a/clojure/fira_code/spacers.clj b/clojure/fira_code/spacers.clj new file mode 100644 index 0000000..199df57 --- /dev/null +++ b/clojure/fira_code/spacers.clj @@ -0,0 +1,31 @@ +(ns fira-code.spacers + (:require + [clojure.string :as str] + [fira-code.glyphs :as glyphs] + [fira-code.time :as time] + [flatland.ordered.map :refer [ordered-map]])) + + +(defn spacer [name] + (ordered-map + :color 3, + :glyphname name, + :lastChange (time/now-str), + :layers + [(ordered-map :layerId (:Light glyphs/weights), :width 1200) + (ordered-map :layerId (:Bold glyphs/weights), :width 1200)])) + + +(defn add-spacers [font ligas] + (let [needed (->> (into #{} cat ligas) + (map #(str % ".spacer"))) + existing (->> (:glyphs font) + (map :glyphname) + (filter #(str/ends-with? % ".spacer"))) + new (->> (remove (set existing) needed) + (sort-by str/lower-case))] + (if-not (empty? new) + (do + (println " added glyphs: " (str/join " " new)) + (update font :glyphs #(into % (map spacer new)))) + font))) \ No newline at end of file diff --git a/clojure/fira_code/time.clj b/clojure/fira_code/time.clj new file mode 100644 index 0000000..25e40bb --- /dev/null +++ b/clojure/fira_code/time.clj @@ -0,0 +1,13 @@ +(ns fira-code.time + (:import + [java.time LocalDateTime ZoneId] + [java.time.format DateTimeFormatter])) + + +(def ^ZoneId UTC (ZoneId/of "UTC")) + + +(defn now-str [] + (.format + (DateTimeFormatter/ofPattern "yyyy-MM-dd HH:mm:ss +0000") + (LocalDateTime/now UTC))) diff --git a/clojure/regen_classes.clj b/clojure/regen_classes.clj deleted file mode 100644 index a2b5013..0000000 --- a/clojure/regen_classes.clj +++ /dev/null @@ -1,26 +0,0 @@ -;; clj -m regen-classes - -(ns regen-classes - (:require - [clojure.string :as str] - [glyphs :as glyphs] - [flatland.ordered.map :refer [ordered-map]])) - -(defn -main [& args] - (let [path (or (first args) "FiraCode.glyphs") - font (glyphs/load path) - not-spaces (->> (:glyphs font) - (remove #(re-find #"^\.|space$|space\." (:glyphname %))) - (remove #(= "0" (:export %)))) - _ (println "Generating class:NotSpace with" (count not-spaces) "glyphs") - class (ordered-map - :code (str/join " " (map :glyphname not-spaces)) - :name "NotSpace") - classes (->> (:classes font) - (remove #(= "NotSpace" (:name %))) - (cons class)) - font' (assoc font :classes classes) - _ (glyphs/save! path font') - _ (println)])) - -; (-main) \ No newline at end of file diff --git a/script/update_glyphs b/script/update_glyphs new file mode 100755 index 0000000..6707dba --- /dev/null +++ b/script/update_glyphs @@ -0,0 +1,3 @@ +#!/bin/zsh -euo pipefail + +clojure -m fira-code.main \ No newline at end of file