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

[makeotf] Regression with TTFs with a GDEF #680

Closed
benkiel opened this issue Nov 10, 2018 · 1 comment
Closed

[makeotf] Regression with TTFs with a GDEF #680

benkiel opened this issue Nov 10, 2018 · 1 comment
Assignees
Labels

Comments

@benkiel
Copy link
Contributor

benkiel commented Nov 10, 2018

Making a TTF with a GDEF chokes the current pip version of makeotf. One gets an output of "
Error removing table 'GDEF' from OTF font reference." but the font builds. However, no other features are built into the font (no GSUB features at all, just mark and kern). There is no warning that the font has not built with all the OT features. The last download version of the afdko builds the fonts with all the features.

@readroberts
Copy link
Contributor

@cjchapman @miguelsousa Building any TTF with makeotf was broken by commit 1bd1066,' [sfntedit] Fix exit codes'. That commit removed the a message "Done" from sfntedit on a successful exit. 'makeotf' tests for this string in the sfntedit output when copying tables from the temporary OTF font to the final TTF font. For a quick fix hack, edit lines 2206 and 2215 to report an error if "FATAL" is in the output, rather than checking if "Done" is missing.

The right way to fix this is to review all the places where fdkutils.runShellCmd or fdkutils.runShellCmdLogging are called, and normalize how an error is detected. We want to move to detecting an error return code rather than depending on text in the program output. This will require also fixing fdkutils, as the two functions for executing a program both assume that a program error will raise a subprocess.CalledProcessError, which is in fact not the case. Both Popen.communicate() and Popen.poll() set the Popen.returncode, but do not raise an exception if the return code is non-zero.

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

No branches or pull requests

3 participants