12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #!/usr/bin/python
- #
- # Copyright 2015 Google Inc. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- """Post-subset changes for Roboto for Android."""
- import sys
- from fontTools import ttLib
- from nototools import font_data
- def output_protruding_glyphs(font, ymin, ymax):
- """Outputs all glyphs going outside the specified vertical range."""
- protruding_glyphs = []
- glyf_table = font['glyf']
- for glyph_name in glyf_table.keys():
- glyph = glyf_table[glyph_name]
- if glyph.numberOfContours == 0:
- continue
- if glyph.yMin < ymin or glyph.yMax > ymax:
- protruding_glyphs.append(glyph_name)
- if protruding_glyphs:
- print "Protruding glyphs in %s:" % font_data.font_name(font),
- print ', '.join(sorted(protruding_glyphs))
- YMIN = -555
- YMAX = 2163
- def main(argv):
- """Forces yMin/yMax values and generates a new font."""
- source_font_name = argv[1]
- target_font_name = argv[2]
- font = ttLib.TTFont(source_font_name, recalcBBoxes=False)
- head = font['head']
- head.yMin = YMIN
- head.yMax = YMAX
- output_protruding_glyphs(font, YMIN, YMAX)
- font.save(target_font_name)
- # Make sure the values are set correctly
- font = ttLib.TTFont(target_font_name, recalcBBoxes=False)
- head = font['head']
- assert head.yMin == YMIN and head.yMax == YMAX
- if __name__ == "__main__":
- main(sys.argv)
|