Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot select less_hyphen.liga by frontforge in Fira Code v4, v5 but work in v3 #1100

Closed
gaplo917 opened this issue Jul 15, 2020 · 2 comments

Comments

@gaplo917
Copy link

gaplo917 commented Jul 15, 2020

I am using python fontforge to extract Fira Code Ligatures to patch them into Hack fonts. In Fira Code v3, I can correctly select the ligatured glyph from FiraCode-Regular.otf.

The following code to extract the ligatures.

    def copy_ligature_from_source(font_path, ligature_name):
        try:
            liga_font = fontforge.open(font_path)
            liga_font.selection.none()
            liga_font.selection.select(ligature_name)
            liga_font.copy()
            print("Found %s in source font." % ligature_name)
            return True
        except ValueError:
            print("%s not found in source font." % ligature_name)
            return False

But in Fira Code v4 and v5, the same codes doesn't work on some ligatures. Is there any breaking changes on the glyph name (ligature name)?

P.S. The above codes can correctly select ligatures from Jetbrains Mono fonts.

Resource

Ref: gaplo917/Ligatured-Hack#3

Full list of the ligatures that cannot be selected

underscore_underscore.liga not found in source font.
less_hyphen.liga not found in source font.
hyphen_greater.liga not found in source font.
equal_greater.liga not found in source font.
greater_hyphen.liga not found in source font.
hyphen_less.liga not found in source font.
braceleft_period.liga not found in source font.
less_colon.liga not found in source font.
colon_greater.liga not found in source font.
period_braceright.liga not found in source font.
backslash_backslash.liga not found in source font.
equal_asciitilde.liga not found in source font.
exclam_asciitilde.liga not found in source font.
slash_equal.liga not found in source font.
hyphen_bar.liga not found in source font.
bar_hyphen.liga not found in source font.
bar_equal.liga not found in source font.
numbersign_numbersign.liga not found in source font.
equal_colon_equal.liga not found in source font.
equal_slash_equal.liga not found in source font.
equal_exclam_equal.liga not found in source font.
less_hyphen_less.liga not found in source font.
less_less_hyphen.liga not found in source font.
less_hyphen_hyphen.liga not found in source font.
less_hyphen_greater.liga not found in source font.
hyphen_hyphen_greater.liga not found in source font.
hyphen_greater_greater.liga not found in source font.
less_equal_less.liga not found in source font.
less_less_equal.liga not found in source font.
less_equal_equal.liga not found in source font.
less_equal_greater.liga not found in source font.
equal_equal_greater.liga not found in source font.
equal_greater_greater.liga not found in source font.
greater_equal_greater.liga not found in source font.
greater_greater_equal.liga not found in source font.
greater_greater_hyphen.liga not found in source font.
hyphen_less_less.liga not found in source font.
equal_less_less.liga not found in source font.
less_hyphen_bar.liga not found in source font.
less_equal_bar.liga not found in source font.
bar_hyphen_greater.liga not found in source font.
bar_equal_greater.liga not found in source font.
hyphen_hyphen_greater.liga not found in source font.
slash_equal_equal.liga not found in source font.
underscore_bar_underscore.liga not found in source font.
bar_bar_hyphen.liga not found in source font.
bar_bar_equal.liga not found in source font.
numbersign_numbersign_numbersign.liga not found in source font.
numbersign_numbersign_numbersign_numbersign.liga not found in source font.
less_less_hyphen_greater_greater.liga not found in source font.

Full list of the ligatures that can be selected

Found period_equal.liga in source font.
Found period_hyphen.liga in source font.
Found colon_equal.liga in source font.
Found equal_equal.liga in source font.
Found exclam_equal.liga in source font.
Found slash_backslash.liga in source font.
Found backslash_slash.liga in source font.
Found less_asciitilde.liga in source font.
Found asciitilde_asciitilde.liga in source font.
Found asciitilde_greater.liga in source font.
Found less_less.liga in source font.
Found less_equal.liga in source font.
Found less_greater.liga in source font.
Found greater_equal.liga in source font.
Found greater_greater.liga in source font.
Found braceleft_bar.liga in source font.
Found bracketleft_bar.liga in source font.
Found bar_bracketright.liga in source font.
Found bar_braceright.liga in source font.
Found less_bar.liga in source font.
Found bar_greater.liga in source font.
Found less_dollar.liga in source font.
Found dollar_greater.liga in source font.
Found less_plus.liga in source font.
Found plus_greater.liga in source font.
Found less_asterisk.liga in source font.
Found asterisk_greater.liga in source font.
Found slash_asterisk.liga in source font.
Found asterisk_slash.liga in source font.
Found slash_slash.liga in source font.
Found less_slash.liga in source font.
Found slash_greater.liga in source font.
Found semicolon_semicolon.liga in source font.
Found colon_colon.liga in source font.
Found exclam_exclam.liga in source font.
Found question_question.liga in source font.
Found percent_percent.liga in source font.
Found ampersand_ampersand.liga in source font.
Found bar_bar.liga in source font.
Found period_period.liga in source font.
Found period_question.liga in source font.
Found question_period.liga in source font.
Found hyphen_hyphen.liga in source font.
Found plus_plus.liga in source font.
Found asterisk_asterisk.liga in source font.
Found asciitilde_hyphen.liga in source font.
Found hyphen_asciitilde.liga in source font.
Found asciitilde_at.liga in source font.
Found asciicircum_equal.liga in source font.
Found question_equal.liga in source font.
Found numbersign_exclam.liga in source font.
Found numbersign_equal.liga in source font.
Found numbersign_braceleft.liga in source font.
Found numbersign_bracketleft.liga in source font.
Found bracketright_numbersign.liga in source font.
Found numbersign_parenleft.liga in source font.
Found numbersign_question.liga in source font.
Found numbersign_underscore.liga in source font.
Found ampersand_ampersand.liga in source font.
Found dollar_greater.liga in source font.
Found less_equal.liga in source font.
Found greater_equal.liga in source font.
Found period_period_equal.liga in source font.
Found colon_colon_equal.liga in source font.
Found equal_equal_equal.liga in source font.
Found exclam_equal_equal.liga in source font.
Found less_asciitilde_greater.liga in source font.
Found less_asciitilde_asciitilde.liga in source font.
Found asciitilde_asciitilde_greater.liga in source font.
Found less_less_less.liga in source font.
Found greater_greater_greater.liga in source font.
Found less_bar_bar.liga in source font.
Found less_bar_greater.liga in source font.
Found bar_bar_greater.liga in source font.
Found less_dollar_greater.liga in source font.
Found less_plus_greater.liga in source font.
Found less_asterisk_greater.liga in source font.
Found slash_slash_slash.liga in source font.
Found less_slash_greater.liga in source font.
Found w_w_w.liga in source font.
Found colon_colon_colon.liga in source font.
Found period_period_period.liga in source font.
Found period_period_less.liga in source font.
Found hyphen_hyphen_hyphen.liga in source font.
Found plus_plus_plus.liga in source font.
Found asterisk_asterisk_asterisk.liga in source font.
Found numbersign_underscore_parenleft.liga in source font.
Found less_dollar_greater.liga in source font.
Found less_bar_bar_bar.liga in source font.
Found bar_bar_bar_greater.liga in source font.
Found less_exclam_hyphen_hyphen.liga in source font.
@tonsky
Copy link
Owner

tonsky commented Jul 15, 2020

All hyphen and equals-based arrows, underscores and numbersigns were removed as individual characters in 4. They are now built from segments to allow for infinite-length arrows

@gaplo917
Copy link
Author

Thank you!

I think it is difficult for me to compose all variants of hyphen, equals-based arrows, underscores and numbersigns to get the ligatures and get the patch work.

I could only fallback to v3.1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants