4 ms·
I think the author has underestimated the power of the substitution rules - it looks like it should be possible to drag a state machine along, hence recognise a
by penteract 2y ago
I think the author has underestimated the power of the substitution rules - it looks like it should be possible to drag a state machine along, hence recognise any regular language.
Something like the following should handle quoted strings (untested and needs every character to be listed out in the definitions of @Char, @CharQuoted and @NonQuoteQuoted):
sub Quote @Char' by @CharQuoted;
sub Backslash.quoted Backslash' by Backslash.quoted2;
sub Backslash.quoted Quote' by Quote.escaped;
sub [@NonQuoteQuoted Quote.escaped Backslash.quoted2] @Char' by @CharQuoted;
I don't know if context can be carried between different lines.
- spease 2y agoHow long until it runs Doom?
- ortsa 2y agoYou may have already seen it (here on hn) but someone absolutely has made a game within a font: https://www.coderelay.io/fontemon.html https://www.coderelay.io/fontemon.html
- california-og 2y agoThat's genius, thank you!! I will have to try that tomorrow but I have a feeling it might just work : - )
- penteract 2y agoHere's a tested version that, given text containing only lower case letters, backslash and double quote, capitalizes the letters between quotes and handles escaping reasonably. (works with NotoSans-Regular.ttf) @Char = [a-z quotedbl backslash]; @CharQuoted = [A-Z quotesingle slash]; @NonQuoteQuoted = [A-Z slash]; @Escaped = [asterisk dollar]; feature liga { lookup xa { sub quotedbl @Char' by @CharQuoted; sub slash backslash' by dollar; sub slash quotedbl' by asterisk; sub [@NonQuoteQuoted asterisk dollar] @Char' by @CharQuoted; } xa; } liga; feature liga { lookup xb { sub quotesingle' by quotedbl; sub slash' by backslash; sub dollar' by backslash; sub asterisk' by quotedbl; } xb; } liga;
- ajudson 2y agoDo you know if there is a programmatic way to convert multi character to multi character without intermediate glyphs? E.G. snake -> snāk
- penteract 2y agoFor that example, I think you could do s n a' k e -> ā s n ā k e' -> NULL although that would also change "snāke" to "snāk", which is not quite what you asked for. I don't think there's a way to do many-to-many substitution in general, although it would always be possible if you create intermediate glyphs. I believe Section 5 of http://adobe-type-tools.github.io/afdko/OpenTypeFeatureFileSpecification.html#2 http://adobe-type-tools.github.io/afdko/OpenTypeFeatureFileS... gives the full list of substitution types.
- gcr 2y agoImagine cross-compiling a 60MB tree-sitter grammar into your OpenFont file’s metadata!