4690 lines
182 KiB
Diff
4690 lines
182 KiB
Diff
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/add_vs_cmap.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/add_vs_cmap.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/add_vs_cmap.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/add_vs_cmap.py 2019-07-09 17:20:41.507204218 +0200
|
||
|
|
@@ -44,7 +44,7 @@
|
||
|
|
cmap_table = font_data.get_cmap(font)
|
||
|
|
emoji = set(cmap_table.keys()) & emoji_variants
|
||
|
|
if not emoji:
|
||
|
|
- print 'no emoji match those in %s' % font_name
|
||
|
|
+ print('no emoji match those in %s' % font_name)
|
||
|
|
return
|
||
|
|
uvs = VS_EMOJI if presentation == 'emoji' else VS_TEXT
|
||
|
|
cmap14 = _c_m_a_p.CmapSubtable.newSubtable(14)
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: add_vs_cmap.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/android_patches.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/android_patches.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/android_patches.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/android_patches.py 2019-07-09 17:18:45.223412508 +0200
|
||
|
|
@@ -1,5 +1,5 @@
|
||
|
|
#!/usr/bin/env python
|
||
|
|
-# -*- coding: UTF-8 -*-
|
||
|
|
+# -*- coding: utf-8 -*-
|
||
|
|
# Copyright 2016 Google Inc. All rights reserved.
|
||
|
|
#
|
||
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
|
@@ -76,7 +76,7 @@
|
||
|
|
& coverage.character_set(lgc_font_file))
|
||
|
|
|
||
|
|
if chars_to_add:
|
||
|
|
- print 'patch hyphens', font_name
|
||
|
|
+ print('patch hyphens', font_name)
|
||
|
|
merger.merge_chars_from_bank(
|
||
|
|
path.join(srcdir, font_name),
|
||
|
|
path.join(srcdir, lgc_font_name),
|
||
|
|
@@ -86,9 +86,9 @@
|
||
|
|
if copy_unchanged:
|
||
|
|
shutil.copy2(
|
||
|
|
path.join(srcdir,font_name), path.join(dstdir, font_name))
|
||
|
|
- print '%s already has hyphens, copying' % font_name
|
||
|
|
+ print('%s already has hyphens, copying' % font_name)
|
||
|
|
else:
|
||
|
|
- print '%s already has hyphens' % font_name
|
||
|
|
+ print('%s already has hyphens' % font_name)
|
||
|
|
|
||
|
|
|
||
|
|
def _remove_cjk_emoji(cjk_font_names, srcdir, dstdir):
|
||
|
|
@@ -122,7 +122,7 @@
|
||
|
|
)
|
||
|
|
|
||
|
|
for font_name in cjk_font_names:
|
||
|
|
- print 'remove cjk emoji', font_name
|
||
|
|
+ print('remove cjk emoji', font_name)
|
||
|
|
_remove_from_cmap(
|
||
|
|
path.join(srcdir, font_name),
|
||
|
|
path.join(dstdir, font_name),
|
||
|
|
@@ -149,12 +149,12 @@
|
||
|
|
result to dstdir using the same name."""
|
||
|
|
|
||
|
|
if not path.isdir(srcdir):
|
||
|
|
- print '%s is not a directory' % srcdir
|
||
|
|
+ print('%s is not a directory' % srcdir)
|
||
|
|
return
|
||
|
|
|
||
|
|
ttc_files = [f for f in os.listdir(srcdir) if f.endswith('.ttc')]
|
||
|
|
if not ttc_files:
|
||
|
|
- print 'no .ttc file to patch in %s' % srcdir
|
||
|
|
+ print('no .ttc file to patch in %s' % srcdir)
|
||
|
|
return
|
||
|
|
|
||
|
|
tool_utils.ensure_dir_exists(dstdir)
|
||
|
|
@@ -284,7 +284,7 @@
|
||
|
|
lines.append('}\n')
|
||
|
|
with codecs.open(filename, 'w', 'UTF-8') as f:
|
||
|
|
f.write('\n'.join(lines))
|
||
|
|
- print 'wrote', filename
|
||
|
|
+ print('wrote', filename)
|
||
|
|
|
||
|
|
|
||
|
|
def subset_symbols(srcdir, dstdir):
|
||
|
|
@@ -339,7 +339,7 @@
|
||
|
|
target_coverage -= set(range(0x23BE, 0x23CC+1))
|
||
|
|
|
||
|
|
for font_file in glob.glob(path.join(srcdir, 'NotoSansSymbols-*.ttf')):
|
||
|
|
- print 'main subset', font_file
|
||
|
|
+ print('main subset', font_file)
|
||
|
|
out_file = path.join(
|
||
|
|
dstdir, path.basename(font_file)[:-4] + '-Subsetted.ttf')
|
||
|
|
subset.subset_font(font_file, out_file, include=target_coverage)
|
||
|
|
@@ -349,7 +349,7 @@
|
||
|
|
target_coverage = EMOJI | unicode_data.get_unicode_emoji_variants()
|
||
|
|
|
||
|
|
for font_file in glob.glob(path.join(srcdir, 'NotoSansSymbols-*.ttf')):
|
||
|
|
- print 'secondary subset', font_file
|
||
|
|
+ print('secondary subset', font_file)
|
||
|
|
out_file = path.join(
|
||
|
|
dstdir, path.basename(font_file)[:-4] + '-Subsetted2.ttf')
|
||
|
|
subset.subset_font(font_file, out_file, include=target_coverage)
|
||
|
|
@@ -360,10 +360,10 @@
|
||
|
|
|
||
|
|
# Leave alone OTF
|
||
|
|
for font_file in glob.glob(path.join(srcdir, '*.ttf')):
|
||
|
|
- print 'change post table to 3.0', font_file
|
||
|
|
+ print('change post table to 3.0', font_file)
|
||
|
|
out_file = path.join(dstdir, path.basename(font_file))
|
||
|
|
if path.isfile(out_file):
|
||
|
|
- print ' repatching', out_file
|
||
|
|
+ print(' repatching', out_file)
|
||
|
|
font_file = out_file
|
||
|
|
font = ttLib.TTFont(font_file)
|
||
|
|
font['post'].formatType = 3.0
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: android_patches.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/autofix_for_phase3.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/autofix_for_phase3.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/autofix_for_phase3.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/autofix_for_phase3.py 2019-07-09 17:20:20.707420340 +0200
|
||
|
|
@@ -87,16 +87,16 @@
|
||
|
|
# add '/' to distinguish between noto-fonts/ and noto-fonts-alpha/
|
||
|
|
for repo_tag in ['[fonts]', '[fonts_alpha]', '[source]']:
|
||
|
|
prefix = tool_utils.resolve_path(repo_tag) + '/'
|
||
|
|
- print 'trying prefix "%s"' % prefix
|
||
|
|
+ print('trying prefix "%s"' % prefix)
|
||
|
|
if all(tool_utils.resolve_path(f).startswith(prefix) for f in fonts):
|
||
|
|
return _get_fonts_repo_version_info(repo_tag)
|
||
|
|
# else report the first failure
|
||
|
|
for f in fonts:
|
||
|
|
if not tool_utils.resolve_path(f).startswith(prefix):
|
||
|
|
- print '# failed at "%s"' % tool_utils.resolve_path(f)
|
||
|
|
+ print('# failed at "%s"' % tool_utils.resolve_path(f))
|
||
|
|
break
|
||
|
|
|
||
|
|
- print 'no prefix succeeded'
|
||
|
|
+ print('no prefix succeeded')
|
||
|
|
return None
|
||
|
|
|
||
|
|
|
||
|
|
@@ -158,12 +158,12 @@
|
||
|
|
dst_dir = tool_utils.ensure_dir_exists(dst_dir)
|
||
|
|
|
||
|
|
font_names = sorted(_expand_font_names(font_names))
|
||
|
|
- print 'Processing %d fonts\n %s' % (
|
||
|
|
- len(font_names), '\n '.join(font_names[:5]) + '...')
|
||
|
|
+ print('Processing %d fonts\n %s' % (
|
||
|
|
+ len(font_names), '\n '.join(font_names[:5]) + '...'))
|
||
|
|
|
||
|
|
src_root = tool_utils.resolve_path(src_root)
|
||
|
|
- print 'Src root: %s' % src_root
|
||
|
|
- print 'Dest dir: %s' % dst_dir
|
||
|
|
+ print('Src root: %s' % src_root)
|
||
|
|
+ print('Dest dir: %s' % dst_dir)
|
||
|
|
|
||
|
|
if release_dir is None:
|
||
|
|
rel_dir = None
|
||
|
|
@@ -181,7 +181,7 @@
|
||
|
|
|
||
|
|
if not version_info:
|
||
|
|
raise Exception('could not compute version info from fonts')
|
||
|
|
- print 'Computed version_info: %s' % version_info
|
||
|
|
+ print('Computed version_info: %s' % version_info)
|
||
|
|
else:
|
||
|
|
_check_version_info(version_info)
|
||
|
|
|
||
|
|
@@ -189,7 +189,7 @@
|
||
|
|
_check_autohint(autohint)
|
||
|
|
|
||
|
|
if dry_run:
|
||
|
|
- print '*** dry run %s***' % ('(autohint) ' if autohint else '')
|
||
|
|
+ print('*** dry run %s***' % ('(autohint) ' if autohint else ''))
|
||
|
|
for f in font_names:
|
||
|
|
f = path.join(src_root, f)
|
||
|
|
fix_font(f, dst_dir, rel_dir, version, version_info, autohint, dry_run)
|
||
|
|
@@ -237,7 +237,7 @@
|
||
|
|
rversion = _extract_version(relfont) if relfont else None
|
||
|
|
|
||
|
|
if rversion:
|
||
|
|
- print 'Existing release version: %s' % rversion
|
||
|
|
+ print('Existing release version: %s' % rversion)
|
||
|
|
r_mm, r_is_phase2 = _version_str_to_mm(rversion)
|
||
|
|
|
||
|
|
mm, is_phase2 = _version_str_to_mm(version)
|
||
|
|
@@ -245,7 +245,7 @@
|
||
|
|
if nversion == 'keep':
|
||
|
|
if rversion is not None:
|
||
|
|
if r_is_phase2:
|
||
|
|
- print 'Warning, keeping phase 2 release version %s' % rversion
|
||
|
|
+ print('Warning, keeping phase 2 release version %s' % rversion)
|
||
|
|
return rversion
|
||
|
|
else:
|
||
|
|
n_mm, n_is_phase_2 = _version_str_to_mm(nversion)
|
||
|
|
@@ -309,11 +309,11 @@
|
||
|
|
def autohint_font(src, dst, script, dry_run):
|
||
|
|
code = _autohint_code(src, script)
|
||
|
|
if code == 'not-hinted':
|
||
|
|
- print 'Warning: no hinting information for %s, script %s' % (src, script)
|
||
|
|
+ print('Warning: no hinting information for %s, script %s' % (src, script))
|
||
|
|
return
|
||
|
|
|
||
|
|
if code == None:
|
||
|
|
- print 'Warning: unable to autohint %s' % src
|
||
|
|
+ print('Warning: unable to autohint %s' % src)
|
||
|
|
return
|
||
|
|
|
||
|
|
if code == 'no-script':
|
||
|
|
@@ -321,14 +321,14 @@
|
||
|
|
else:
|
||
|
|
args = ['ttfautohint', '-t', '-W', '-f', code, src, dst]
|
||
|
|
if dry_run:
|
||
|
|
- print 'dry run would autohint:\n "%s"' % ' '.join(args)
|
||
|
|
+ print('dry run would autohint:\n "%s"' % ' '.join(args))
|
||
|
|
return
|
||
|
|
|
||
|
|
hinted_dir = tool_utils.ensure_dir_exists(path.dirname(dst))
|
||
|
|
try:
|
||
|
|
subprocess.check_call(args)
|
||
|
|
except Exception as e:
|
||
|
|
- print '### failed to autohint %s' % src
|
||
|
|
+ print('### failed to autohint %s' % src)
|
||
|
|
# we failed to autohint, let's continue anyway
|
||
|
|
# however autohint will have left an empty file there, remove it.
|
||
|
|
try:
|
||
|
|
@@ -337,7 +337,7 @@
|
||
|
|
pass
|
||
|
|
|
||
|
|
|
||
|
|
- print 'wrote autohinted %s using %s' % (dst, code)
|
||
|
|
+ print('wrote autohinted %s using %s' % (dst, code))
|
||
|
|
|
||
|
|
|
||
|
|
def _alert(val_name, cur_val, new_val):
|
||
|
|
@@ -345,7 +345,7 @@
|
||
|
|
tmpl = 'update %s\n from: "%s"\n to: "%s"'
|
||
|
|
else:
|
||
|
|
tmpl = 'update %s\n from: %4d\n to: %4d'
|
||
|
|
- print tmpl % (val_name, cur_val, new_val)
|
||
|
|
+ print( tmpl % (val_name, cur_val, new_val))
|
||
|
|
|
||
|
|
|
||
|
|
def _alert_and_check(val_name, cur_val, expected_val, max_diff):
|
||
|
|
@@ -396,7 +396,7 @@
|
||
|
|
|
||
|
|
|
||
|
|
def fix_font(f, dst_dir, rel_dir, version, version_info, autohint, dry_run):
|
||
|
|
- print '\n-----\nfont:', f
|
||
|
|
+ print('\n-----\nfont:', f)
|
||
|
|
font = ttLib.TTFont(f)
|
||
|
|
|
||
|
|
relfont = _get_release_font(f, rel_dir)
|
||
|
|
@@ -419,7 +419,7 @@
|
||
|
|
expected_upem = 1000
|
||
|
|
upem = font['head'].unitsPerEm
|
||
|
|
if upem != expected_upem:
|
||
|
|
- print 'expected %d upem but got %d upem' % (expected_upem, upem)
|
||
|
|
+ print('expected %d upem but got %d upem' % (expected_upem, upem))
|
||
|
|
|
||
|
|
if _is_ui_metrics(f):
|
||
|
|
if upem == 2048:
|
||
|
|
@@ -450,10 +450,10 @@
|
||
|
|
fname = path.basename(f)
|
||
|
|
udst = path.join(dst_dir, 'unhinted', fname)
|
||
|
|
if dry_run:
|
||
|
|
- print 'dry run would write:\n "%s"' % udst
|
||
|
|
+ print('dry run would write:\n "%s"' % udst)
|
||
|
|
else:
|
||
|
|
font.save(udst)
|
||
|
|
- print 'wrote %s' % udst
|
||
|
|
+ print('wrote %s' % udst)
|
||
|
|
|
||
|
|
if autohint:
|
||
|
|
hdst = path.join(dst_dir, 'hinted', fname)
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: autofix_for_phase3.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/autofix_for_release.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/autofix_for_release.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/autofix_for_release.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/autofix_for_release.py 2019-07-09 17:18:03.180849356 +0200
|
||
|
|
@@ -58,7 +58,7 @@
|
||
|
|
expected_font_revision = major_version+'.'+minor_version
|
||
|
|
if font_revision != expected_font_revision:
|
||
|
|
font['head'].fontRevision = float(expected_font_revision)
|
||
|
|
- print 'Fixed fontRevision to %s' % expected_font_revision
|
||
|
|
+ print('Fixed fontRevision to %s' % expected_font_revision)
|
||
|
|
return True
|
||
|
|
|
||
|
|
return False
|
||
|
|
@@ -68,7 +68,7 @@
|
||
|
|
"""Fix the fsType of the font."""
|
||
|
|
if font['OS/2'].fsType != 0:
|
||
|
|
font['OS/2'].fsType = 0
|
||
|
|
- print 'Updated fsType to 0'
|
||
|
|
+ print('Updated fsType to 0')
|
||
|
|
return True
|
||
|
|
return False
|
||
|
|
|
||
|
|
@@ -77,7 +77,7 @@
|
||
|
|
"""Fix the vendor ID of the font."""
|
||
|
|
if font['OS/2'].achVendID != 'GOOG':
|
||
|
|
font['OS/2'].achVendID = 'GOOG'
|
||
|
|
- print 'Changed font vendor ID to GOOG'
|
||
|
|
+ print('Changed font vendor ID to GOOG')
|
||
|
|
return True
|
||
|
|
return False
|
||
|
|
|
||
|
|
@@ -107,7 +107,7 @@
|
||
|
|
copyright_data = u'Copyright %s Google Inc. All Rights Reserved.' % year
|
||
|
|
|
||
|
|
if copyright_data != name_records[0]:
|
||
|
|
- print 'Updated copyright message to "%s"' % copyright_data
|
||
|
|
+ print('Updated copyright message to "%s"' % copyright_data)
|
||
|
|
font_data.set_name_record(font, 0, copyright_data)
|
||
|
|
modified = True
|
||
|
|
|
||
|
|
@@ -120,8 +120,8 @@
|
||
|
|
break
|
||
|
|
if record != name_records[name_id]:
|
||
|
|
font_data.set_name_record(font, name_id, record)
|
||
|
|
- print 'Updated name table record #%d from "%s" to "%s"' % (
|
||
|
|
- name_id, oldrecord, record)
|
||
|
|
+ print('Updated name table record #%d from "%s" to "%s"' % (
|
||
|
|
+ name_id, oldrecord, record))
|
||
|
|
modified = True
|
||
|
|
|
||
|
|
trademark_names = ['Noto', 'Arimo', 'Tinos', 'Cousine']
|
||
|
|
@@ -132,29 +132,29 @@
|
||
|
|
trademark_name = name
|
||
|
|
break
|
||
|
|
if not trademark_name:
|
||
|
|
- print 'no trademarked name in \'%s\'' % font_family
|
||
|
|
+ print('no trademarked name in \'%s\'' % font_family)
|
||
|
|
else:
|
||
|
|
trademark_line = TRADEMARK_TEMPLATE % trademark_name
|
||
|
|
if name_records[7] != trademark_line:
|
||
|
|
old_line = name_records[7]
|
||
|
|
font_data.set_name_record(font, 7, trademark_line)
|
||
|
|
modified = True
|
||
|
|
- print 'Updated name table record 7 from "%s" to "%s"' % (old_line, trademark_line)
|
||
|
|
+ print('Updated name table record 7 from "%s" to "%s"' % (old_line, trademark_line))
|
||
|
|
|
||
|
|
if name_records[11] != NOTO_URL:
|
||
|
|
font_data.set_name_record(font, 11, NOTO_URL)
|
||
|
|
modified = True
|
||
|
|
- print 'Updated name table record 11 to "%s"' % NOTO_URL
|
||
|
|
+ print('Updated name table record 11 to "%s"' % NOTO_URL)
|
||
|
|
|
||
|
|
if name_records[_LICENSE_ID] != _SIL_LICENSE:
|
||
|
|
font_data.set_name_record(font, _LICENSE_ID, _SIL_LICENSE)
|
||
|
|
modified = True
|
||
|
|
- print 'Updated license id'
|
||
|
|
+ print('Updated license id')
|
||
|
|
|
||
|
|
if name_records[_LICENSE_URL_ID] != _SIL_LICENSE_URL:
|
||
|
|
font_data.set_name_record(font, _LICENSE_URL_ID, _SIL_LICENSE_URL)
|
||
|
|
modified = True
|
||
|
|
- print 'Updated license url'
|
||
|
|
+ print('Updated license url')
|
||
|
|
|
||
|
|
# TODO: check preferred family/subfamily(16&17)
|
||
|
|
|
||
|
|
@@ -177,7 +177,7 @@
|
||
|
|
modified = True
|
||
|
|
|
||
|
|
if modified:
|
||
|
|
- print 'Fixed GDEF.AttachList'
|
||
|
|
+ print('Fixed GDEF.AttachList')
|
||
|
|
|
||
|
|
return modified
|
||
|
|
|
||
|
|
@@ -193,7 +193,7 @@
|
||
|
|
if glyph.program.bytecode:
|
||
|
|
glyph.program.bytecode = array.array('B')
|
||
|
|
modified = True
|
||
|
|
- print 'Dropped hints from glyph "%s"' % glyph_name
|
||
|
|
+ print('Dropped hints from glyph "%s"' % glyph_name)
|
||
|
|
return modified
|
||
|
|
|
||
|
|
|
||
|
|
@@ -203,7 +203,7 @@
|
||
|
|
for table in tables:
|
||
|
|
if table in font:
|
||
|
|
modified = True
|
||
|
|
- print 'Dropped table "%s"' % table
|
||
|
|
+ print('Dropped table "%s"' % table)
|
||
|
|
modified = True
|
||
|
|
del font[table]
|
||
|
|
return modified
|
||
|
|
@@ -249,8 +249,8 @@
|
||
|
|
old_bitmap_string = font_data.unicoderange_bitmap_to_string(os2_bitmap)
|
||
|
|
font_data.set_os2_unicoderange_bitmap(font, expected_bitmap)
|
||
|
|
bitmap_string = font_data.unicoderange_bitmap_to_string(expected_bitmap)
|
||
|
|
- print 'Change unicoderanges from:\n %s\nto:\n %s' % (
|
||
|
|
- old_bitmap_string, bitmap_string)
|
||
|
|
+ print('Change unicoderanges from:\n %s\nto:\n %s' % (
|
||
|
|
+ old_bitmap_string, bitmap_string))
|
||
|
|
return True
|
||
|
|
return False
|
||
|
|
|
||
|
|
@@ -259,17 +259,17 @@
|
||
|
|
modified = False
|
||
|
|
hhea_table = font["hhea"]
|
||
|
|
if hhea_table.lineGap != 0:
|
||
|
|
- print 'hhea lineGap was %s, setting to 0' % hhea_table.lineGap
|
||
|
|
+ print('hhea lineGap was %s, setting to 0' % hhea_table.lineGap)
|
||
|
|
hhea_table.lineGap = 0
|
||
|
|
modified = True
|
||
|
|
vhea_table = font.get("vhea")
|
||
|
|
if vhea_table and vhea_table.lineGap != 0:
|
||
|
|
- print 'vhea lineGap was %s, setting to 0' % vhea_table.lineGap
|
||
|
|
+ print('vhea lineGap was %s, setting to 0' % vhea_table.lineGap)
|
||
|
|
vhea_table.lineGap = 0
|
||
|
|
modified = True
|
||
|
|
os2_table = font["OS/2"]
|
||
|
|
if os2_table.sTypoLineGap != 0:
|
||
|
|
- print 'os/2 sTypoLineGap was %d, setting to 0' % os2_table.sTypoLineGap
|
||
|
|
+ print('os/2 sTypoLineGap was %d, setting to 0' % os2_table.sTypoLineGap)
|
||
|
|
os2_table.sTypoLineGap = 0
|
||
|
|
modified = True
|
||
|
|
return modified
|
||
|
|
@@ -282,7 +282,7 @@
|
||
|
|
|
||
|
|
src_file = os.path.join(src_root, file_path)
|
||
|
|
|
||
|
|
- print 'Font file: %s' % src_file
|
||
|
|
+ print('Font file: %s' % src_file)
|
||
|
|
font = ttLib.TTFont(src_file)
|
||
|
|
modified = False
|
||
|
|
|
||
|
|
@@ -305,11 +305,11 @@
|
||
|
|
|
||
|
|
fixed_path = fix_path(file_path, is_hinted)
|
||
|
|
if fixed_path != file_path:
|
||
|
|
- print 'changed file_path from "%s" to "%s"' % (file_path, fixed_path)
|
||
|
|
+ print('changed file_path from "%s" to "%s"' % (file_path, fixed_path))
|
||
|
|
modified = True
|
||
|
|
|
||
|
|
if not modified:
|
||
|
|
- print 'No modification necessary'
|
||
|
|
+ print('No modification necessary')
|
||
|
|
if modified or save_unmodified:
|
||
|
|
# wait until we need it before we create the dest directory
|
||
|
|
dst_file = os.path.join(dst_root, fixed_path)
|
||
|
|
@@ -317,7 +317,7 @@
|
||
|
|
if not path.isdir(dst_dir):
|
||
|
|
os.makedirs(dst_dir)
|
||
|
|
font.save(dst_file)
|
||
|
|
- print 'Wrote %s' % dst_file
|
||
|
|
+ print('Wrote %s' % dst_file)
|
||
|
|
|
||
|
|
|
||
|
|
def fix_fonts(src_root, dst_root, name_pat, save_unmodified):
|
||
|
|
@@ -353,17 +353,17 @@
|
||
|
|
|
||
|
|
if not args.src_root:
|
||
|
|
# not on command line and not in user's .notoconfig
|
||
|
|
- print 'no src root specified.'
|
||
|
|
+ print('no src root specified.')
|
||
|
|
return
|
||
|
|
|
||
|
|
src_root = path.expanduser(args.src_root)
|
||
|
|
if not path.isdir(src_root):
|
||
|
|
- print '%s does not exist or is not a directory' % src_root
|
||
|
|
+ print('%s does not exist or is not a directory' % src_root)
|
||
|
|
return
|
||
|
|
|
||
|
|
dst_root = path.expanduser(args.dst_root)
|
||
|
|
if not path.isdir(dst_root):
|
||
|
|
- print '%s does not exist or is not a directory' % dst_root
|
||
|
|
+ print('%s does not exist or is not a directory' % dst_root)
|
||
|
|
return
|
||
|
|
|
||
|
|
fix_fonts(src_root, dst_root, args.name_pat, args.save_unmodified)
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: autofix_for_release.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/check_familyname_and_styles.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/check_familyname_and_styles.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/check_familyname_and_styles.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/check_familyname_and_styles.py 2019-07-09 17:10:55.065307030 +0200
|
||
|
|
@@ -90,9 +90,9 @@
|
||
|
|
def check_familyname(name, styles):
|
||
|
|
notofont = noto_fonts.get_noto_font('unhinted/' + name + '-Regular.ttf')
|
||
|
|
if not notofont:
|
||
|
|
- print 'Error: could not parse', name
|
||
|
|
+ print('Error: could not parse', name)
|
||
|
|
return False
|
||
|
|
- print name, noto_fonts.noto_font_to_wws_family_id(notofont), styles
|
||
|
|
+ print(name, noto_fonts.noto_font_to_wws_family_id(notofont), styles)
|
||
|
|
return True
|
||
|
|
|
||
|
|
|
||
|
|
@@ -156,7 +156,7 @@
|
||
|
|
f.write(allnames)
|
||
|
|
f.write('\n')
|
||
|
|
else:
|
||
|
|
- print allnames
|
||
|
|
+ print(allnames)
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
@@ -180,17 +180,17 @@
|
||
|
|
if args.check:
|
||
|
|
passed = check_familynames(args.familynamedata)
|
||
|
|
if not passed:
|
||
|
|
- print 'Check failed, some files had errors.'
|
||
|
|
+ print('Check failed, some files had errors.')
|
||
|
|
return
|
||
|
|
- print 'Check succeeded.'
|
||
|
|
+ print('Check succeeded.')
|
||
|
|
|
||
|
|
if args.write:
|
||
|
|
outfile = None if args.write == 'stdout' else args.write
|
||
|
|
if not outfile and args.check:
|
||
|
|
- print
|
||
|
|
+ print()
|
||
|
|
generate_filenames(args.familynamedata, outfile, args.sort)
|
||
|
|
if outfile:
|
||
|
|
- print 'Wrote', outfile
|
||
|
|
+ print('Wrote', outfile)
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == '__main__':
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: check_familyname_and_styles.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/cldr_data.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/cldr_data.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/cldr_data.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/cldr_data.py 2019-07-09 17:16:03.238095658 +0200
|
||
|
|
@@ -137,11 +137,11 @@
|
||
|
|
_LANG_TO_SCRIPTS[lang].add(script)
|
||
|
|
|
||
|
|
if langs_missing_likely_subtag_data:
|
||
|
|
- print 'cldr_data: %d keys not in likely subtags:' % len(
|
||
|
|
- langs_missing_likely_subtag_data)
|
||
|
|
+ print('cldr_data: %d keys not in likely subtags:' % len(
|
||
|
|
+ langs_missing_likely_subtag_data))
|
||
|
|
for k in sorted(langs_missing_likely_subtag_data):
|
||
|
|
- print ' ', k
|
||
|
|
- print 'cldr_data: defaulting script to Latn'
|
||
|
|
+ print(' ', k)
|
||
|
|
+ print('cldr_data: defaulting script to Latn')
|
||
|
|
# raise Exception('oops')
|
||
|
|
|
||
|
|
# Use likely subtag data mapping script to lang to extend lang_to_scripts.
|
||
|
|
@@ -155,8 +155,8 @@
|
||
|
|
lang = _LIKELY_SUBTAGS[und_scr][0]
|
||
|
|
if lang != 'und' and script not in _LANG_TO_SCRIPTS[lang]:
|
||
|
|
if _DEBUG:
|
||
|
|
- print 'lang to scripts missing script %s for %s (from %s)' % (
|
||
|
|
- script, lang, ', '.join(_LANG_TO_SCRIPTS[lang]))
|
||
|
|
+ print('lang to scripts missing script %s for %s (from %s)' % (
|
||
|
|
+ script, lang, ', '.join(_LANG_TO_SCRIPTS[lang])))
|
||
|
|
_LANG_TO_SCRIPTS[lang].add(script)
|
||
|
|
|
||
|
|
if _USE_EXTRA_LOCALE_DATA:
|
||
|
|
@@ -175,13 +175,13 @@
|
||
|
|
lang_scripts = _LANG_TO_SCRIPTS[lang]
|
||
|
|
if script not in lang_scripts:
|
||
|
|
if _DEBUG:
|
||
|
|
- print ('extra likely subtags lang %s has script %s but supplemental '
|
||
|
|
+ print(('extra likely subtags lang %s has script %s but supplemental '
|
||
|
|
'only has [%s]') % (
|
||
|
|
- lang, script, ', '.join(sorted(lang_scripts)))
|
||
|
|
+ lang, script, ', '.join(sorted(lang_scripts))))
|
||
|
|
if len(lang_scripts) == 1:
|
||
|
|
replacement = set([script])
|
||
|
|
if _DEBUG:
|
||
|
|
- print 'replacing %s with %s' % (lang_scripts, replacement)
|
||
|
|
+ print('replacing %s with %s' % (lang_scripts, replacement))
|
||
|
|
_LANG_TO_SCRIPTS[lang] = replacement
|
||
|
|
else:
|
||
|
|
_LANG_TO_SCRIPTS[lang].add(script)
|
||
|
|
@@ -189,8 +189,8 @@
|
||
|
|
# skip ZZ region
|
||
|
|
if region != 'ZZ' and lang_script not in _REGION_TO_LANG_SCRIPTS[region]:
|
||
|
|
if _DEBUG:
|
||
|
|
- print 'extra lang_script %s not in cldr for %s, adding' % (
|
||
|
|
- lang_script, region)
|
||
|
|
+ print('extra lang_script %s not in cldr for %s, adding' % (
|
||
|
|
+ lang_script, region))
|
||
|
|
_REGION_TO_LANG_SCRIPTS[region].add(lang_script)
|
||
|
|
_LANG_TO_REGIONS[lang].add(region)
|
||
|
|
|
||
|
|
@@ -265,7 +265,7 @@
|
||
|
|
m = LSRV_RE.match(lang_tag)
|
||
|
|
if not m:
|
||
|
|
if _DEBUG:
|
||
|
|
- print 'regex did not match locale \'%s\'' % loc_tag
|
||
|
|
+ print('regex did not match locale \'%s\'' % loc_tag)
|
||
|
|
return result
|
||
|
|
lang = m.group(1)
|
||
|
|
script = m.group(2)
|
||
|
|
@@ -291,7 +291,7 @@
|
||
|
|
break
|
||
|
|
|
||
|
|
if _DEBUG:
|
||
|
|
- print 'no likely subtag for %s' % lang_tag
|
||
|
|
+ print('no likely subtag for %s' % lang_tag)
|
||
|
|
tags = lang_tag.split('-')
|
||
|
|
return (tags[0], tags[1] if len(tags) > 1 else 'Zzzz',
|
||
|
|
tags[2] if len(tags) > 2 else 'ZZ')
|
||
|
|
@@ -321,7 +321,7 @@
|
||
|
|
return False
|
||
|
|
# we really should throw an exception
|
||
|
|
if _DEBUG:
|
||
|
|
- print 'No script metadata for %s' % script
|
||
|
|
+ print('No script metadata for %s' % script)
|
||
|
|
return False
|
||
|
|
|
||
|
|
|
||
|
|
@@ -467,7 +467,7 @@
|
||
|
|
except KeyError:
|
||
|
|
pass
|
||
|
|
if _DEBUG:
|
||
|
|
- print 'No English name for \'%s\'' % lang_scr
|
||
|
|
+ print('No English name for \'%s\'' % lang_scr)
|
||
|
|
return None
|
||
|
|
|
||
|
|
|
||
|
|
@@ -477,7 +477,7 @@
|
||
|
|
return _ENGLISH_TERRITORY_NAMES[region]
|
||
|
|
except KeyError:
|
||
|
|
if _DEBUG:
|
||
|
|
- print 'No English name for region %s' % region
|
||
|
|
+ print('No English name for region %s' % region)
|
||
|
|
return ''
|
||
|
|
|
||
|
|
|
||
|
|
@@ -582,7 +582,7 @@
|
||
|
|
if accept(s)]
|
||
|
|
exemplars.extend(unicode_set_string_to_list(tag.text))
|
||
|
|
except Exception as e:
|
||
|
|
- print 'failed parse of %s' % cldr_file_path
|
||
|
|
+ print('failed parse of %s' % cldr_file_path)
|
||
|
|
raise e
|
||
|
|
break
|
||
|
|
|
||
|
|
@@ -643,7 +643,7 @@
|
||
|
|
m = LSRV_RE.match(loc_tag)
|
||
|
|
if not m:
|
||
|
|
if _DEBUG:
|
||
|
|
- print 'regex did not match locale \'%s\'' % loc_tag
|
||
|
|
+ print('regex did not match locale \'%s\'' % loc_tag)
|
||
|
|
return None
|
||
|
|
lang = m.group(1)
|
||
|
|
script = m.group(2)
|
||
|
|
@@ -697,8 +697,7 @@
|
||
|
|
# population and converting the list to a tuple
|
||
|
|
for lang_scr, values in tmp_map.iteritems():
|
||
|
|
_lang_scr_to_lit_pops[lang_scr] = tuple(
|
||
|
|
- sorted(values, key=lambda (r, p): (-p, r)))
|
||
|
|
-
|
||
|
|
+ sorted(values, key=lambda x: (-x[1], x[0])))
|
||
|
|
|
||
|
|
def get_lang_scr_to_lit_pops():
|
||
|
|
"""Return a mapping from lang_scr to a list of tuples of region and
|
||
|
|
@@ -759,28 +758,28 @@
|
||
|
|
_USE_EXTRA_LOCALE_DATA = False
|
||
|
|
|
||
|
|
if args.region_to_lang != None:
|
||
|
|
- print 'region to lang+script'
|
||
|
|
+ print('region to lang+script')
|
||
|
|
regions = args.region_to_lang or sorted(known_regions())
|
||
|
|
for r in regions:
|
||
|
|
- print '%s (%s):' % (r, get_english_region_name(r))
|
||
|
|
+ print('%s (%s):' % (r, get_english_region_name(r)))
|
||
|
|
for ls in sorted(region_to_lang_scripts(r)):
|
||
|
|
- print ' %s' % ls
|
||
|
|
+ print(' %s' % ls)
|
||
|
|
|
||
|
|
if args.lang_to_region != None:
|
||
|
|
- print 'lang to region'
|
||
|
|
+ print('lang to region')
|
||
|
|
langs = args.lang_to_region or sorted(known_langs())
|
||
|
|
for l in langs:
|
||
|
|
- print '%s (%s):' % (l, get_english_language_name(l))
|
||
|
|
+ print('%s (%s):' % (l, get_english_language_name(l)))
|
||
|
|
for r in sorted(lang_to_regions(l)):
|
||
|
|
- print ' %s' % r
|
||
|
|
+ print(' %s' % r)
|
||
|
|
|
||
|
|
if args.lang_to_script != None:
|
||
|
|
- print 'lang to script'
|
||
|
|
+ print('lang to script')
|
||
|
|
langs = args.lang_to_script or sorted(known_langs())
|
||
|
|
for l in langs:
|
||
|
|
- print '%s (%s):' % (l, get_english_language_name(l))
|
||
|
|
+ print('%s (%s):' % (l, get_english_language_name(l)))
|
||
|
|
for s in sorted(lang_to_scripts(l)):
|
||
|
|
- print ' %s' % s
|
||
|
|
+ print(' %s' % s)
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: cldr_data.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/cmap_block_coverage.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/cmap_block_coverage.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/cmap_block_coverage.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/cmap_block_coverage.py 2019-07-09 17:09:04.418461664 +0200
|
||
|
|
@@ -85,8 +85,8 @@
|
||
|
|
initial_cp = start_cp
|
||
|
|
while num < details - 1 and num < defined_count:
|
||
|
|
if initial_cp in defined_cps:
|
||
|
|
- print '%13d %04x %s' % (
|
||
|
|
- num + 1, initial_cp, unicode_data.name(initial_cp, '(unnamed)'))
|
||
|
|
+ print('%13d %04x %s' % (
|
||
|
|
+ num + 1, initial_cp, unicode_data.name(initial_cp, '(unnamed)')))
|
||
|
|
num += 1
|
||
|
|
initial_cp += 1
|
||
|
|
if num < defined_count:
|
||
|
|
@@ -102,11 +102,11 @@
|
||
|
|
middle_cp = final_cp - 1
|
||
|
|
while middle_cp >= initial_cp:
|
||
|
|
if middle_cp in defined_cps:
|
||
|
|
- print '%13s' % '...'
|
||
|
|
+ print('%13s' % '...')
|
||
|
|
break
|
||
|
|
middle_cp -= 1
|
||
|
|
if final_name:
|
||
|
|
- print '%13d %04x %s' % (defined_count, final_cp, final_name)
|
||
|
|
+ print('%13d %04x %s' % (defined_count, final_cp, final_name))
|
||
|
|
|
||
|
|
def _is_empty_scripts(scripts):
|
||
|
|
return (not scripts
|
||
|
|
@@ -135,10 +135,10 @@
|
||
|
|
script_names = '(all)'
|
||
|
|
else:
|
||
|
|
script_names = _script_names(scripts)
|
||
|
|
- print '%13s %6d %3s in %3d %7s: %s' % (
|
||
|
|
+ print('%13s %6d %3s in %3d %7s: %s' % (
|
||
|
|
range_text, defined_count, 'cps' if defined_count != 1 else 'cp',
|
||
|
|
num_scripts, 'scripts' if num_scripts != 1 else 'script',
|
||
|
|
- script_names)
|
||
|
|
+ script_names))
|
||
|
|
|
||
|
|
if details > 0:
|
||
|
|
_list_details(start_cp, limit_cp, defined_cps, defined_count, details)
|
||
|
|
@@ -162,7 +162,7 @@
|
||
|
|
if block and block != 'No_Block':
|
||
|
|
if not (skip_empty and _is_empty_scripts(scripts)):
|
||
|
|
if not showed_block:
|
||
|
|
- print '...' if block == 'No_Block' else block
|
||
|
|
+ print('...') if block == 'No_Block' else block
|
||
|
|
showed_block = True
|
||
|
|
_list_range(
|
||
|
|
start_cp, cp, defined_cps, defined_count, scripts, all_scripts,
|
||
|
|
@@ -178,7 +178,7 @@
|
||
|
|
defined_count += 1
|
||
|
|
if not (skip_empty and _is_empty_scripts(scripts)):
|
||
|
|
if not showed_block:
|
||
|
|
- print '...' if block == 'No_Block' else block
|
||
|
|
+ print('...') if block == 'No_Block' else block
|
||
|
|
_list_range(
|
||
|
|
start_cp, limit, defined_cps, defined_count, scripts, all_scripts,
|
||
|
|
only_scripts, details)
|
||
|
|
@@ -186,13 +186,13 @@
|
||
|
|
|
||
|
|
def _summarize_block(block, block_count, defined_count, script_counts):
|
||
|
|
if block == 'No_Block':
|
||
|
|
- print '...'
|
||
|
|
+ print('...')
|
||
|
|
return
|
||
|
|
|
||
|
|
if block_count == defined_count:
|
||
|
|
- print '%s (%d cps)' % (block, defined_count)
|
||
|
|
+ print('%s (%d cps)' % (block, defined_count))
|
||
|
|
else:
|
||
|
|
- print '%s (%d of %d cps)' % (block, defined_count, block_count)
|
||
|
|
+ print('%s (%d of %d cps)' % (block, defined_count, block_count))
|
||
|
|
|
||
|
|
lower_limit = int(defined_count / 10)
|
||
|
|
groups = collections.defaultdict(list)
|
||
|
|
@@ -223,7 +223,7 @@
|
||
|
|
else:
|
||
|
|
count = '%d-%d' % (low, hi)
|
||
|
|
script_names = _script_names(scripts)
|
||
|
|
- print '%6s: %s' % (count, script_names)
|
||
|
|
+ print('%6s: %s' % (count, script_names))
|
||
|
|
|
||
|
|
|
||
|
|
def _summarize_blocks(start, limit, defined_cps, cp_to_scripts, all_scripts):
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: cmap_block_coverage.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/cmap_data.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/cmap_data.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/cmap_data.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/cmap_data.py 2019-07-09 17:07:47.021269334 +0200
|
||
|
|
@@ -222,13 +222,13 @@
|
||
|
|
'2,6.4',
|
||
|
|
])
|
||
|
|
cmapdata = CmapData(meta, table)
|
||
|
|
- print cmapdata
|
||
|
|
+ print(cmapdata)
|
||
|
|
xml_text = write_cmap_data(cmapdata)
|
||
|
|
newdata = read_cmap_data(xml_text)
|
||
|
|
- print newdata
|
||
|
|
+ print(newdata)
|
||
|
|
write_cmap_data_file(cmapdata, 'test_cmap_data.xml', pretty=True)
|
||
|
|
newdata = read_cmap_data_file('test_cmap_data.xml')
|
||
|
|
- print newdata
|
||
|
|
+ print(newdata)
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: cmap_data.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/collect_cldr_punct.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/collect_cldr_punct.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/collect_cldr_punct.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/collect_cldr_punct.py 2019-07-09 17:07:22.869521366 +0200
|
||
|
|
@@ -99,7 +99,7 @@
|
||
|
|
script = cldr_data.get_likely_script(filename)
|
||
|
|
if script == 'Zzzz':
|
||
|
|
if filename != 'root':
|
||
|
|
- print >> sys.stderr, 'no script for %s' % filename
|
||
|
|
+ sys.stderr.write('no script for %s\n' % filename)
|
||
|
|
else:
|
||
|
|
script_to_punct[script] |= punct
|
||
|
|
|
||
|
|
@@ -135,13 +135,13 @@
|
||
|
|
|
||
|
|
|
||
|
|
def _write_script_to_punct(script_to_punct):
|
||
|
|
- print 'SCRIPT_TO_PUNCT = {'
|
||
|
|
+ print('SCRIPT_TO_PUNCT = {')
|
||
|
|
for script in sorted(script_to_punct):
|
||
|
|
chars = script_to_punct[script]
|
||
|
|
int_chars = [ord(cp) for cp in chars]
|
||
|
|
- print ' # %s' % ('|'.join(sorted(chars)))
|
||
|
|
- print " '%s': '%s'," % (script, tool_utils.write_int_ranges(int_chars))
|
||
|
|
- print '}'
|
||
|
|
+ print(' # %s' % ('|'.join(sorted(chars))))
|
||
|
|
+ print(" '%s': '%s'," % (script, tool_utils.write_int_ranges(int_chars)))
|
||
|
|
+ print('}')
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: collect_cldr_punct.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/compare_cmap_data.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/compare_cmap_data.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/compare_cmap_data.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/compare_cmap_data.py 2019-07-09 17:06:19.111186700 +0200
|
||
|
|
@@ -106,8 +106,8 @@
|
||
|
|
if target_script not in base_map:
|
||
|
|
missing_scripts.append(target_script)
|
||
|
|
if missing_scripts:
|
||
|
|
- print 'Cannot compare %s and %s, %s not in cmap data.' % (
|
||
|
|
- base_script, target_script, ', '.join(missing_scripts))
|
||
|
|
+ print('Cannot compare %s and %s, %s not in cmap data.' % (
|
||
|
|
+ base_script, target_script, ', '.join(missing_scripts)))
|
||
|
|
return
|
||
|
|
base_data = base_map[base_script]
|
||
|
|
target_data = base_map[target_script]
|
||
|
|
@@ -139,10 +139,10 @@
|
||
|
|
def show_undefined(start, end):
|
||
|
|
if start >= 0:
|
||
|
|
if end > start:
|
||
|
|
- print ' %04x-%04x Zzzz <%d undefined>' % (
|
||
|
|
- start, end, end - start - 1)
|
||
|
|
+ print(' %04x-%04x Zzzz <%d undefined>' % (
|
||
|
|
+ start, end, end - start - 1))
|
||
|
|
else:
|
||
|
|
- print ' %04x Zzzz <1 undefined>' % start
|
||
|
|
+ print(' %04x Zzzz <1 undefined>' % start)
|
||
|
|
|
||
|
|
for cp in sorted(cps):
|
||
|
|
block = unicode_data.block(cp)
|
||
|
|
@@ -150,7 +150,7 @@
|
||
|
|
show_undefined(undefined_start, undefined_end)
|
||
|
|
undefined_start, undefined_end = -1, -1
|
||
|
|
if block != last_block:
|
||
|
|
- print ' %s' % block
|
||
|
|
+ print(' %s' % block)
|
||
|
|
last_block = block
|
||
|
|
script = unicode_data.script(cp)
|
||
|
|
if script == 'Zzzz':
|
||
|
|
@@ -178,14 +178,14 @@
|
||
|
|
else:
|
||
|
|
script_text = ', '.join(scripts)
|
||
|
|
extra = ' (font %s)' % script_text
|
||
|
|
- print ' %6s %4s %2s %3s %s%s%s' % (
|
||
|
|
+ print(' %6s %4s %2s %3s %s%s%s' % (
|
||
|
|
'%04x' % cp,
|
||
|
|
script,
|
||
|
|
unicode_data.category(cp),
|
||
|
|
unicode_data.age(cp),
|
||
|
|
unicode_data.name(cp, ''),
|
||
|
|
extensions,
|
||
|
|
- extra)
|
||
|
|
+ extra))
|
||
|
|
show_undefined(undefined_start, undefined_end)
|
||
|
|
|
||
|
|
|
||
|
|
@@ -195,16 +195,16 @@
|
||
|
|
def report_cps(label, cps, inverted=None):
|
||
|
|
if not cps:
|
||
|
|
return
|
||
|
|
- print ' %s (%d): %s' % (
|
||
|
|
- label, len(cps), lint_config.write_int_ranges(cps))
|
||
|
|
+ print(' %s (%d): %s' % (
|
||
|
|
+ label, len(cps), lint_config.write_int_ranges(cps)))
|
||
|
|
if detailed:
|
||
|
|
_print_detailed(cps, inverted)
|
||
|
|
|
||
|
|
if report_same:
|
||
|
|
- print label
|
||
|
|
+ print(label)
|
||
|
|
if added or removed or xadded or xremoved:
|
||
|
|
if not report_same:
|
||
|
|
- print label
|
||
|
|
+ print(label)
|
||
|
|
removed_to_fallback = removed & xadded if removed and xadded else None
|
||
|
|
if removed_to_fallback:
|
||
|
|
removed -= removed_to_fallback
|
||
|
|
@@ -235,8 +235,8 @@
|
||
|
|
base_title = title_from_metadata(base_cmap_data.meta)
|
||
|
|
target_title = title_from_metadata(target_cmap_data.meta)
|
||
|
|
|
||
|
|
- print 'base: %s' % base_title
|
||
|
|
- print 'target: %s' % target_title
|
||
|
|
+ print('base: %s' % base_title)
|
||
|
|
+ print('target: %s' % target_title)
|
||
|
|
for script in sorted(compare):
|
||
|
|
added, removed, xadded, xremoved = compare[script]
|
||
|
|
label = '%s # %s' % (script, base_map[script].name)
|
||
|
|
@@ -248,7 +248,7 @@
|
||
|
|
compare, base_cmap_data = compare_result
|
||
|
|
base_map = cmap_data.create_map_from_table(base_cmap_data.table)
|
||
|
|
title = title_from_metadata(base_cmap_data.meta)
|
||
|
|
- print 'data: %s' % title
|
||
|
|
+ print('data: %s' % title)
|
||
|
|
for t in sorted(compare):
|
||
|
|
added, removed, xadded, xremoved = compare[t]
|
||
|
|
base_script, target_script = t
|
||
|
|
@@ -313,7 +313,7 @@
|
||
|
|
|
||
|
|
if not args.target:
|
||
|
|
if not scripts or len(scripts) < 2:
|
||
|
|
- print 'Interscript comparison requires two or more scripts.'
|
||
|
|
+ print('Interscript comparison requires two or more scripts.')
|
||
|
|
return
|
||
|
|
result = compare_interscript_data_file(args.base, args.scripts, opts)
|
||
|
|
report_interscript_compare(result, detailed=args.detailed)
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: compare_cmap_data.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/compare_fonts.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/compare_fonts.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/compare_fonts.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/compare_fonts.py 2019-07-09 17:03:38.868858885 +0200
|
||
|
|
@@ -82,10 +82,10 @@
|
||
|
|
failed = False
|
||
|
|
for test in test_list:
|
||
|
|
if test not in FontCompare.test_names:
|
||
|
|
- print 'unknown test: \'%s\'' % test
|
||
|
|
+ print('unknown test: \'%s\'' % test)
|
||
|
|
failed = True
|
||
|
|
if failed:
|
||
|
|
- print 'tests are: %s' % (','.join(sorted(FontCompare.test_names)))
|
||
|
|
+ print('tests are: %s' % (','.join(sorted(FontCompare.test_names))))
|
||
|
|
return None
|
||
|
|
return frozenset(test_list)
|
||
|
|
|
||
|
|
@@ -131,25 +131,25 @@
|
||
|
|
def _log(self, msg):
|
||
|
|
"""Write a message that should not go to config output."""
|
||
|
|
if not self.emit_config:
|
||
|
|
- print msg
|
||
|
|
+ print(msg)
|
||
|
|
|
||
|
|
def _logerr(self, msg):
|
||
|
|
"""Write an error that should not go to config output."""
|
||
|
|
# this is an error, but lint doesn't check for it, so no point in emitting a comment.
|
||
|
|
if not self.emit_config:
|
||
|
|
- print msg
|
||
|
|
+ print(msg)
|
||
|
|
|
||
|
|
def _err(self, msg):
|
||
|
|
"""Write a message that should go to config as a comment, or just be logged."""
|
||
|
|
if self.emit_config:
|
||
|
|
- print '# ' + msg
|
||
|
|
+ print('# ' + msg)
|
||
|
|
else:
|
||
|
|
- print msg
|
||
|
|
+ print(msg)
|
||
|
|
|
||
|
|
def _config(self, msg):
|
||
|
|
"""Write a message that should go to config."""
|
||
|
|
if self.emit_config:
|
||
|
|
- print msg
|
||
|
|
+ print(msg)
|
||
|
|
|
||
|
|
def _check_attribute(self, target_obj, test_obj, attr):
|
||
|
|
target_value = getattr(target_obj, attr)
|
||
|
|
@@ -238,9 +238,9 @@
|
||
|
|
|
||
|
|
for attr, test_val, target_val in sorted(failed_attrs):
|
||
|
|
if self.emit_config:
|
||
|
|
- print 'enable head/hhea/%s' % attr.lower()
|
||
|
|
+ print('enable head/hhea/%s' % attr.lower())
|
||
|
|
else:
|
||
|
|
- print 'font hhea %s was %d but target was %d' % (attr, test_val, target_val)
|
||
|
|
+ print('font hhea %s was %d but target was %d' % (attr, test_val, target_val))
|
||
|
|
|
||
|
|
def check_os2(self):
|
||
|
|
if self._skip('OS/2'):
|
||
|
|
@@ -260,9 +260,9 @@
|
||
|
|
|
||
|
|
for attr, test_val, target_val in sorted(failed_attrs):
|
||
|
|
if self.emit_config:
|
||
|
|
- print 'enable head/os2/%s' % attr_name_map[attr]
|
||
|
|
+ print('enable head/os2/%s' % attr_name_map[attr])
|
||
|
|
else:
|
||
|
|
- print 'font OS/2 %s was %d but target was %d' % (attr, test_val, target_val)
|
||
|
|
+ print('font OS/2 %s was %d but target was %d' % (attr, test_val, target_val))
|
||
|
|
|
||
|
|
def check_glyph_bounds(self):
|
||
|
|
# Don't compare the actual bounds, but whether they exceed the limits when the target
|
||
|
|
@@ -451,14 +451,14 @@
|
||
|
|
target = ttLib.TTFont(target_file)
|
||
|
|
test = ttLib.TTFont(test_file)
|
||
|
|
if reverse:
|
||
|
|
- print 'reversing comparison'
|
||
|
|
+ print('reversing comparison')
|
||
|
|
temp = target
|
||
|
|
target = test
|
||
|
|
test = temp
|
||
|
|
|
||
|
|
- print
|
||
|
|
+ print()
|
||
|
|
if not emit_config:
|
||
|
|
- print 'target is previous version' if incremental_version else 'target is reference font'
|
||
|
|
+ print('target is previous version' if incremental_version else 'target is reference font')
|
||
|
|
FontCompare(target, test, incremental_version, emit_config, ignored_cp, only_cp,
|
||
|
|
enabled_tests).check_all()
|
||
|
|
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: compare_fonts.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/compare_summary.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/compare_summary.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/compare_summary.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/compare_summary.py 2019-07-09 17:05:16.470840372 +0200
|
||
|
|
@@ -55,7 +55,7 @@
|
||
|
|
|
||
|
|
def print_keys(key_list):
|
||
|
|
for k in key_list:
|
||
|
|
- print ' ' + k
|
||
|
|
+ print(' ' + k)
|
||
|
|
|
||
|
|
def compare_table_info(base_info, target_info):
|
||
|
|
biggest_deltas = []
|
||
|
|
@@ -110,7 +110,7 @@
|
||
|
|
def print_difference(k, base_tuple, target_tuple, other_difference):
|
||
|
|
b_path, b_version, b_name, b_size, b_numglyphs, b_numchars, b_cmap, b_tableinfo = base_tuple
|
||
|
|
t_path, t_version, t_name, t_size, t_numglyphs, t_numchars, t_cmap, t_tableinfo = target_tuple
|
||
|
|
- print ' ' + k
|
||
|
|
+ print(' ' + k)
|
||
|
|
versions_differ = b_version != t_version
|
||
|
|
diff_list = []
|
||
|
|
if versions_differ:
|
||
|
|
@@ -118,10 +118,10 @@
|
||
|
|
msg = '(base is newer!)'
|
||
|
|
else:
|
||
|
|
msg = ''
|
||
|
|
- print ' version: %s vs %s %s' % (b_version, t_version, msg)
|
||
|
|
+ print(' version: %s vs %s %s' % (b_version, t_version, msg))
|
||
|
|
if b_name != t_name:
|
||
|
|
diff_list.append('name')
|
||
|
|
- print " name: '%s' vs '%s'" % (b_name, t_name)
|
||
|
|
+ print(" name: '%s' vs '%s'" % (b_name, t_name))
|
||
|
|
if b_size != t_size:
|
||
|
|
diff_list.append('size')
|
||
|
|
delta = int(t_size) - int(b_size)
|
||
|
|
@@ -129,11 +129,11 @@
|
||
|
|
msg = '%d byte%s smaller' % (-delta, '' if delta == -1 else 's')
|
||
|
|
else:
|
||
|
|
msg = '%d byte%s bigger' % (delta, '' if delta == 1 else 's')
|
||
|
|
- print ' size: %s vs %s (%s)' % (b_size, t_size, msg)
|
||
|
|
+ print(' size: %s vs %s (%s)' % (b_size, t_size, msg))
|
||
|
|
table_diffs = compare_table_info(b_tableinfo, t_tableinfo)
|
||
|
|
if table_diffs:
|
||
|
|
diff_list.append('table')
|
||
|
|
- print ' tables: %s' % table_diffs
|
||
|
|
+ print(' tables: %s' % table_diffs)
|
||
|
|
if b_numglyphs != t_numglyphs:
|
||
|
|
diff_list.append('glyph count')
|
||
|
|
delta = int(t_numglyphs) - int(b_numglyphs)
|
||
|
|
@@ -141,7 +141,7 @@
|
||
|
|
msg = '%d fewer glyph%s' % (-delta, '' if delta == -1 else 's')
|
||
|
|
else:
|
||
|
|
msg = '%d more glyph%s' % (delta, '' if delta == 1 else 's')
|
||
|
|
- print ' glyphs: %s vs %s (%s)' % (b_numglyphs, t_numglyphs, msg)
|
||
|
|
+ print(' glyphs: %s vs %s (%s)' % (b_numglyphs, t_numglyphs, msg))
|
||
|
|
if b_numchars != t_numchars:
|
||
|
|
diff_list.append('char count')
|
||
|
|
delta = int(t_numchars) - int(b_numchars)
|
||
|
|
@@ -149,20 +149,20 @@
|
||
|
|
msg = '%d fewer char%s' % (-delta, '' if delta == -1 else 's')
|
||
|
|
else:
|
||
|
|
msg = '%d more char%s' % (delta, '' if delta == 1 else 's')
|
||
|
|
- print ' chars: %s vs %s (%s)' % (b_numchars, t_numchars, msg)
|
||
|
|
+ print(' chars: %s vs %s (%s)' % (b_numchars, t_numchars, msg))
|
||
|
|
if b_cmap != t_cmap:
|
||
|
|
removed_from_base = b_cmap - t_cmap
|
||
|
|
if removed_from_base:
|
||
|
|
- print ' cmap removed: ' + noto_lint.printable_unicode_range(
|
||
|
|
- removed_from_base)
|
||
|
|
+ print(' cmap removed: ' + noto_lint.printable_unicode_range(
|
||
|
|
+ removed_from_base))
|
||
|
|
added_in_target = t_cmap - b_cmap
|
||
|
|
if added_in_target:
|
||
|
|
- print ' cmap added: ' + noto_lint.printable_unicode_range(
|
||
|
|
- added_in_target)
|
||
|
|
+ print(' cmap added: ' + noto_lint.printable_unicode_range(
|
||
|
|
+ added_in_target))
|
||
|
|
if diff_list and not versions_differ:
|
||
|
|
- print ' %s differs but revision number is the same' % ', '.join(diff_list)
|
||
|
|
+ print(' %s differs but revision number is the same' % ', '.join(diff_list))
|
||
|
|
if not diff_list and other_difference:
|
||
|
|
- print ' other difference'
|
||
|
|
+ print(' other difference')
|
||
|
|
|
||
|
|
def print_changed(key_list, base_map, target_map, comparefn):
|
||
|
|
for k in key_list:
|
||
|
|
@@ -195,16 +195,16 @@
|
||
|
|
|
||
|
|
def header_line(msg):
|
||
|
|
if have_output_hack[0]:
|
||
|
|
- print
|
||
|
|
+ print()
|
||
|
|
else:
|
||
|
|
have_output_hack[0] = True
|
||
|
|
if msg:
|
||
|
|
- print msg
|
||
|
|
+ print(msg)
|
||
|
|
|
||
|
|
if show_paths:
|
||
|
|
header_line(None)
|
||
|
|
- print 'base root: ' + base_root
|
||
|
|
- print 'target root: ' + target_root
|
||
|
|
+ print('base root: ' + base_root)
|
||
|
|
+ print('target root: ' + target_root)
|
||
|
|
if show_added and added:
|
||
|
|
header_line('added')
|
||
|
|
print_keys(added)
|
||
|
|
@@ -239,11 +239,11 @@
|
||
|
|
args.target_root = tool_utils.resolve_path(args.target_root)
|
||
|
|
|
||
|
|
if not os.path.isdir(args.base_root):
|
||
|
|
- print 'base_root %s does not exist or is not a directory' % args.base_root
|
||
|
|
+ print('base_root %s does not exist or is not a directory' % args.base_root)
|
||
|
|
return
|
||
|
|
|
||
|
|
if not os.path.isdir(args.target_root):
|
||
|
|
- print 'target_root %s does not exist or is not a directory' % args.target_root
|
||
|
|
+ print('target_root %s does not exist or is not a directory' % args.target_root)
|
||
|
|
return
|
||
|
|
|
||
|
|
comparefn = tuple_compare if args.compare_size else tuple_compare_no_size
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: compare_summary.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/coverage.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/coverage.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/coverage.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/coverage.py 2019-07-09 17:01:54.449948532 +0200
|
||
|
|
@@ -77,7 +77,7 @@
|
||
|
|
name = unicode_data.name(char)
|
||
|
|
except ValueError:
|
||
|
|
name = '<Unassigned>'
|
||
|
|
- print 'U+%04X %s' % (char, name)
|
||
|
|
+ print('U+%04X %s' % (char, name))
|
||
|
|
|
||
|
|
|
||
|
|
def _write_char_text(chars, filepath, chars_per_line, sep):
|
||
|
|
@@ -91,8 +91,8 @@
|
||
|
|
if m:
|
||
|
|
filename = m.group(1)
|
||
|
|
filename += '_chars.txt'
|
||
|
|
- print 'writing file: %s' % filename
|
||
|
|
- print '%d characters (of %d)' % (len(text), len(chars))
|
||
|
|
+ print('writing file: %s' % filename)
|
||
|
|
+ print('%d characters (of %d)' % (len(text), len(chars)))
|
||
|
|
if chars_per_line > 0:
|
||
|
|
lines = []
|
||
|
|
for n in range(0, len(text), chars_per_line):
|
||
|
|
@@ -108,7 +108,7 @@
|
||
|
|
if args.limit_set:
|
||
|
|
char_set = char_set & args.limit_set
|
||
|
|
if not char_set:
|
||
|
|
- print 'limit excludes all chars in %s' % filepath
|
||
|
|
+ print('limit excludes all chars in %s' % filepath)
|
||
|
|
return
|
||
|
|
sorted_chars = sorted(char_set)
|
||
|
|
if args.info:
|
||
|
|
@@ -116,7 +116,7 @@
|
||
|
|
if args.text:
|
||
|
|
_write_char_text(sorted_chars, filepath, args.chars_per_line, args.sep)
|
||
|
|
if args.ranges:
|
||
|
|
- print 'ranges:\n ' + lint_config.write_int_ranges(sorted_chars, True)
|
||
|
|
+ print('ranges:\n ' + lint_config.write_int_ranges(sorted_chars, True))
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
@@ -151,13 +151,13 @@
|
||
|
|
|
||
|
|
if args.limit:
|
||
|
|
args.limit_set = lint_config.parse_int_ranges(args.limit)
|
||
|
|
- print 'limit to: ' + lint_config.write_int_ranges(args.limit_set)
|
||
|
|
+ print('limit to: ' + lint_config.write_int_ranges(args.limit_set))
|
||
|
|
else:
|
||
|
|
# make sure it exists so checks don't have to care
|
||
|
|
args.limit_set = None
|
||
|
|
|
||
|
|
for fontpath in args.files:
|
||
|
|
- print 'Font: ' + path.normpath(fontpath)
|
||
|
|
+ print('Font: ' + path.normpath(fontpath))
|
||
|
|
_process_font(fontpath, args)
|
||
|
|
|
||
|
|
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: coverage.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/create_image.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/create_image.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/create_image.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/create_image.py 2019-07-09 17:01:27.806226568 +0200
|
||
|
|
@@ -220,11 +220,11 @@
|
||
|
|
ovr = extents[0][2] > width + params.horiz_margin
|
||
|
|
if ovl or ovr:
|
||
|
|
if ovl:
|
||
|
|
- print 'Error: image overflows left bounds'
|
||
|
|
+ print('Error: image overflows left bounds')
|
||
|
|
if ovr:
|
||
|
|
- print 'Error: image overflows right bounds'
|
||
|
|
- print 'extents: %s, width: %s, margin: %s' % (
|
||
|
|
- extents, params.width, params.horiz_margin)
|
||
|
|
+ print('Error: image overflows right bounds')
|
||
|
|
+ print('extents: %s, width: %s, margin: %s' % (
|
||
|
|
+ extents, params.width, params.horiz_margin))
|
||
|
|
top_usage = min(extents[0][1], extents[1][1], 0)
|
||
|
|
bottom_usage = max(extents[0][3], extents[1][3])
|
||
|
|
|
||
|
|
@@ -250,7 +250,7 @@
|
||
|
|
|
||
|
|
real_surface = cairo.SVGSurface(
|
||
|
|
output_path, params.width, calculated_height)
|
||
|
|
- print 'writing', output_path
|
||
|
|
+ print('writing', output_path)
|
||
|
|
draw_on_surface(real_surface, text, params)
|
||
|
|
real_surface.flush()
|
||
|
|
real_surface.finish()
|
||
|
|
@@ -268,7 +268,7 @@
|
||
|
|
real_surface = cairo.ImageSurface(cairo.FORMAT_ARGB32,
|
||
|
|
params.width, calculated_height)
|
||
|
|
draw_on_surface(real_surface, text, params)
|
||
|
|
- print 'writing', output_path
|
||
|
|
+ print('writing', output_path)
|
||
|
|
real_surface.write_to_png(output_path)
|
||
|
|
|
||
|
|
|
||
|
|
@@ -281,7 +281,7 @@
|
||
|
|
elif ext == '.svg':
|
||
|
|
create_svg(text, output_path, **kwargs)
|
||
|
|
else:
|
||
|
|
- print 'extension % not supported' % ext
|
||
|
|
+ print('extension % not supported' % ext)
|
||
|
|
|
||
|
|
|
||
|
|
def test():
|
||
|
|
@@ -421,7 +421,7 @@
|
||
|
|
text, file_name, family=font, weight=weight_name, style=style_name,
|
||
|
|
stretch=stretch_name, language=lang, font_size=font_size,
|
||
|
|
maxheight=maxheight, horiz_margin=horiz_margin)
|
||
|
|
- print 'generated ' + file_name
|
||
|
|
+ print('generated ' + file_name)
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
@@ -467,7 +467,7 @@
|
||
|
|
test()
|
||
|
|
return
|
||
|
|
if args.codes and args.text:
|
||
|
|
- print 'choose either codes or text'
|
||
|
|
+ print('choose either codes or text')
|
||
|
|
return
|
||
|
|
if args.codes:
|
||
|
|
render_codes(
|
||
|
|
@@ -481,12 +481,12 @@
|
||
|
|
args.text = f.read()
|
||
|
|
else:
|
||
|
|
args.text = args.text.decode('unicode-escape')
|
||
|
|
- print 'text length %d' % len(args.text)
|
||
|
|
+ print('text length %d' % len(args.text))
|
||
|
|
render_text(
|
||
|
|
args.out, args.text, args.font, args.bold, args.italic, args.size,
|
||
|
|
args.lang, args.type, args.maxheight, args.horiz_margin)
|
||
|
|
else:
|
||
|
|
- print 'nothing to do'
|
||
|
|
+ print('nothing to do')
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == '__main__':
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: create_image.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/dump_otl.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/dump_otl.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/dump_otl.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/dump_otl.py 2019-07-09 17:00:06.734072577 +0200
|
||
|
|
@@ -35,7 +35,7 @@
|
||
|
|
|
||
|
|
def print_indented(output_string, indents=1):
|
||
|
|
"""Prints a string indented with a specified number of spaces."""
|
||
|
|
- print ' ' * indents + output_string
|
||
|
|
+ print(' ' * indents + output_string)
|
||
|
|
|
||
|
|
def printable_glyph_class(glyph_list, quote=False):
|
||
|
|
"""Returns a printable form for a class of glyphs."""
|
||
|
|
@@ -66,11 +66,11 @@
|
||
|
|
|
||
|
|
def dump_lang_sys(script, lang, lang_sys):
|
||
|
|
"""Dumps a language system."""
|
||
|
|
- print '%s %s:' % (script, lang),
|
||
|
|
+ print('%s %s:' % (script, lang),)
|
||
|
|
assert lang_sys.LookupOrder is None
|
||
|
|
if lang_sys.ReqFeatureIndex != 65535:
|
||
|
|
- print '<%s>' % lang_sys.ReqFeatureIndex,
|
||
|
|
- print lang_sys.FeatureIndex
|
||
|
|
+ print('<%s>' % lang_sys.ReqFeatureIndex,)
|
||
|
|
+ print(lang_sys.FeatureIndex)
|
||
|
|
|
||
|
|
|
||
|
|
def extract_glyphs_from_coverage(coverage):
|
||
|
|
@@ -249,7 +249,7 @@
|
||
|
|
printable_device(anchor.XDeviceTable),
|
||
|
|
printable_device(anchor.YDeviceTable))
|
||
|
|
else:
|
||
|
|
- print vars(anchor)
|
||
|
|
+ print(vars(anchor))
|
||
|
|
assert False, "don't know about anchor format"
|
||
|
|
|
||
|
|
|
||
|
|
@@ -435,7 +435,7 @@
|
||
|
|
record = feature_record[index]
|
||
|
|
tag = record.FeatureTag
|
||
|
|
feature = record.Feature
|
||
|
|
- print index, tag, feature.LookupListIndex
|
||
|
|
+ print(index, tag, feature.LookupListIndex)
|
||
|
|
if feature.FeatureParams is not None:
|
||
|
|
print_indented('# name <%s>;' % feature.FeatureParams.UINameID)
|
||
|
|
|
||
|
|
@@ -444,8 +444,8 @@
|
||
|
|
"""Prints out a lookup list."""
|
||
|
|
for index in range(len(lookup_list)):
|
||
|
|
lookup = lookup_list[index]
|
||
|
|
- print 'lookup %d { # type=%d flag=0x%X' % (
|
||
|
|
- index, lookup.LookupType, lookup.LookupFlag)
|
||
|
|
+ print('lookup %d { # type=%d flag=0x%X' % (
|
||
|
|
+ index, lookup.LookupType, lookup.LookupFlag))
|
||
|
|
|
||
|
|
for subtable in lookup.SubTable:
|
||
|
|
if table_name == 'GSUB':
|
||
|
|
@@ -453,26 +453,26 @@
|
||
|
|
elif table_name == 'GPOS':
|
||
|
|
dump_gpos_subtable(lookup.LookupType, subtable)
|
||
|
|
|
||
|
|
- print '}'
|
||
|
|
+ print('}')
|
||
|
|
|
||
|
|
|
||
|
|
def dump_otl_table(font, table_name):
|
||
|
|
"""Prints out an OpenType Layout table."""
|
||
|
|
if table_name not in font:
|
||
|
|
- print 'no %s table' % table_name
|
||
|
|
- print
|
||
|
|
+ print('no %s table' % table_name)
|
||
|
|
+ print()
|
||
|
|
return
|
||
|
|
else:
|
||
|
|
- print '%s' % table_name
|
||
|
|
- print '----'
|
||
|
|
+ print('%s' % table_name)
|
||
|
|
+ print('----')
|
||
|
|
|
||
|
|
table = font[table_name].table
|
||
|
|
dump_script_record(table.ScriptList.ScriptRecord)
|
||
|
|
- print
|
||
|
|
+ print()
|
||
|
|
dump_feature_record(table.FeatureList.FeatureRecord)
|
||
|
|
- print
|
||
|
|
+ print()
|
||
|
|
dump_lookup_list(table.LookupList.Lookup, table_name)
|
||
|
|
- print
|
||
|
|
+ print()
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
@@ -480,7 +480,7 @@
|
||
|
|
"""Dump the OpenType Layout tables for all input arguments."""
|
||
|
|
for font_file_name in sys.argv[1:]:
|
||
|
|
font = ttLib.TTFont(font_file_name)
|
||
|
|
- print '%s: %s' % (font_file_name, internal_font_name(font))
|
||
|
|
+ print('%s: %s' % (font_file_name, internal_font_name(font)))
|
||
|
|
dump_otl_table(font, 'GPOS')
|
||
|
|
dump_otl_table(font, 'GSUB')
|
||
|
|
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: dump_otl.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/extract_ohchr_attributions.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/extract_ohchr_attributions.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/extract_ohchr_attributions.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/extract_ohchr_attributions.py 2019-07-09 16:56:32.504304964 +0200
|
||
|
|
@@ -100,7 +100,7 @@
|
||
|
|
|
||
|
|
def outdent(self):
|
||
|
|
if not self.margin:
|
||
|
|
- print '*** cannot outdent ***'
|
||
|
|
+ print('*** cannot outdent ***')
|
||
|
|
else:
|
||
|
|
self.margin = self.margin[:-2]
|
||
|
|
|
||
|
|
@@ -113,11 +113,11 @@
|
||
|
|
def handle_starttag(self, tag, attrs):
|
||
|
|
if tag not in ['link', 'meta', 'area', 'img', 'br']:
|
||
|
|
if self.trace:
|
||
|
|
- print self.margin + tag + '>'
|
||
|
|
+ print(self.margin + tag + '>')
|
||
|
|
self.tag_stack.append((tag, self.getpos()))
|
||
|
|
self.indent()
|
||
|
|
elif self.trace:
|
||
|
|
- print self.margin + tag
|
||
|
|
+ print(self.margin + tag)
|
||
|
|
|
||
|
|
if self.state == 'before_table' and tag == 'table':
|
||
|
|
table_id = self.get_attr(attrs, 'id')
|
||
|
|
@@ -149,11 +149,11 @@
|
||
|
|
self.outdent()
|
||
|
|
if tag != prev_tag:
|
||
|
|
if self.trace:
|
||
|
|
- print 'no close tag for %s at %s' % (prev_tag, prev_pos)
|
||
|
|
+ print('no close tag for %s at %s' % (prev_tag, prev_pos))
|
||
|
|
else:
|
||
|
|
break
|
||
|
|
if self.trace:
|
||
|
|
- print self.margin + '<'
|
||
|
|
+ print(self.margin + '<')
|
||
|
|
if self.state == 'in_table':
|
||
|
|
if tag == 'table':
|
||
|
|
self.state = 'after_table'
|
||
|
|
@@ -200,9 +200,9 @@
|
||
|
|
lines.append('\t'.join([ohchr_code, s, lang, attrib]))
|
||
|
|
data = '\n'.join(lines) + '\n'
|
||
|
|
|
||
|
|
- print 'outfile: "%s"' % outfile
|
||
|
|
+ print('outfile: "%s"' % outfile)
|
||
|
|
if not outfile or outfile == '-':
|
||
|
|
- print data
|
||
|
|
+ print(data)
|
||
|
|
else:
|
||
|
|
with open(outfile, 'w') as f:
|
||
|
|
f.write(data)
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: extract_ohchr_attributions.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/font_data.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/font_data.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/font_data.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/font_data.py 2019-07-09 16:54:55.264312043 +0200
|
||
|
|
@@ -130,7 +130,7 @@
|
||
|
|
# for this without explicit per-script data, we're really just
|
||
|
|
# trying to catch obvious errors.
|
||
|
|
|
||
|
|
- expected_bitmap = 0L
|
||
|
|
+ expected_bitmap = 0
|
||
|
|
for count, info in ur_info:
|
||
|
|
bit = info[2]
|
||
|
|
# any non-bmp character causes bit 57 to be set
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: font_data.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_coverage_data.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_coverage_data.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_coverage_data.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_coverage_data.py 2019-07-09 16:53:45.091038802 +0200
|
||
|
|
@@ -170,7 +170,7 @@
|
||
|
|
if out_file:
|
||
|
|
tree.write(out_file, encoding='utf-8', xml_declaration=True)
|
||
|
|
else:
|
||
|
|
- print ET.tostring(tree.getroot(), encoding='utf-8')
|
||
|
|
+ print(ET.tostring(tree.getroot(), encoding='utf-8'))
|
||
|
|
|
||
|
|
|
||
|
|
def _read_meta(meta_elem):
|
||
|
|
@@ -237,7 +237,7 @@
|
||
|
|
cps = get_cps_from_cmap_data_file(cmap_path)
|
||
|
|
paths = None
|
||
|
|
else:
|
||
|
|
- print 'Please specify font files, directories, or a cmap data file.'
|
||
|
|
+ print('Please specify font files, directories, or a cmap data file.')
|
||
|
|
return
|
||
|
|
coverage = create(args.name, cps, paths=paths, cmap_data=cmap_path)
|
||
|
|
write(coverage, args.output_file)
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: generate_coverage_data.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_dingbats_html.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_dingbats_html.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_dingbats_html.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_dingbats_html.py 2019-07-09 16:52:32.368791963 +0200
|
||
|
|
@@ -382,7 +382,7 @@
|
||
|
|
dump_metrics = False
|
||
|
|
|
||
|
|
if dump_metrics:
|
||
|
|
- print '$ %s' % self.name
|
||
|
|
+ print('$ %s' % self.name)
|
||
|
|
|
||
|
|
def context_string(codelist, cp):
|
||
|
|
cps = unichr(codelist.mapped_code(cp))
|
||
|
|
@@ -414,7 +414,7 @@
|
||
|
|
metrics_font = _get_font(fontname)
|
||
|
|
else:
|
||
|
|
metrics_font = None
|
||
|
|
- print >> sys.stderr, 'no metrics font'
|
||
|
|
+ sys.stderr.write('no metrics font\n')
|
||
|
|
|
||
|
|
lines = ['<h3 id="target_%d">%s</h3>' % (tindex, self.name)]
|
||
|
|
char_line = _character_string_html(self.codelist, self.used_fonts[-1])
|
||
|
|
@@ -457,7 +457,7 @@
|
||
|
|
if cp_metrics:
|
||
|
|
lsb, rsb, wid, adv, cy = cp_metrics
|
||
|
|
if dump_metrics:
|
||
|
|
- print '%04x # %4d, %4d, %4d, %s' % (cp, lsb, adv, cy, name)
|
||
|
|
+ print('%04x # %4d, %4d, %4d, %s' % (cp, lsb, adv, cy, name))
|
||
|
|
|
||
|
|
if cp in metrics:
|
||
|
|
nlsb, nadv, ncy = metrics[cp]
|
||
|
|
@@ -878,20 +878,20 @@
|
||
|
|
|
||
|
|
|
||
|
|
def generate_text(outfile, title, fonts, targets, flag_sets, metrics, data_dir):
|
||
|
|
- print >> outfile, title
|
||
|
|
- print >> outfile
|
||
|
|
- print >> outfile, 'Fonts:'
|
||
|
|
+ outfile.write(title + '\n')
|
||
|
|
+ outfile.write('\n')
|
||
|
|
+ outfile.write('Fonts:\n')
|
||
|
|
max_keylen = max(len(key) for key, _ in fonts)
|
||
|
|
fmt = ' %%%ds: %%s (%%s)' % max_keylen
|
||
|
|
for key, keyinfos in fonts:
|
||
|
|
for font, name, _ in keyinfos:
|
||
|
|
rel_font = path.relpath(font, data_dir) if font else '(no font)'
|
||
|
|
- print >> outfile, fmt % (key, name, rel_font)
|
||
|
|
- print >> outfile
|
||
|
|
+ outfile.write(fmt % (key, name, rel_font) + '\n')
|
||
|
|
+ outfile.write('\n')
|
||
|
|
|
||
|
|
for target in targets:
|
||
|
|
- print >> outfile
|
||
|
|
- print >> outfile, target.generate_text(flag_sets, metrics)
|
||
|
|
+ outfile.write('\n')
|
||
|
|
+ outfile.write(target.generate_text(flag_sets, metrics) + '\n')
|
||
|
|
|
||
|
|
|
||
|
|
def _generate_fontkey(fonts, targets, data_dir):
|
||
|
|
@@ -1125,7 +1125,7 @@
|
||
|
|
lines.append(string + '<br/>')
|
||
|
|
lines.append('</div>')
|
||
|
|
|
||
|
|
- print >> outfile, '\n'.join(lines)
|
||
|
|
+ outfile.write('\n'.join(lines) + '\n')
|
||
|
|
"""
|
||
|
|
|
||
|
|
def generate_html(
|
||
|
|
@@ -1138,19 +1138,19 @@
|
||
|
|
styles = _generate_styles(fonts, relpath)
|
||
|
|
mstyles = _METRICS_STYLES if metrics != None else ''
|
||
|
|
contextfont = _CONTEXT_FONT if context else 'sansserif'
|
||
|
|
- print >> outfile, template.substitute(
|
||
|
|
- title=title, styles=styles, mstyles=mstyles, contextfont=contextfont)
|
||
|
|
+ outfile.write(template.substitute(
|
||
|
|
+ title=title, styles=styles, mstyles=mstyles, contextfont=contextfont) + '\n')
|
||
|
|
|
||
|
|
- print >> outfile, _generate_fontkey(fonts, targets, data_dir)
|
||
|
|
+ outfile.write(_generate_fontkey(fonts, targets, data_dir) + '\n')
|
||
|
|
|
||
|
|
# hardcode font key for now
|
||
|
|
# _generate_html_lines(outfile, 'sym4')
|
||
|
|
|
||
|
|
for index, target in enumerate(targets):
|
||
|
|
- print >> outfile, target.generate_html(
|
||
|
|
- index, context, metrics, flag_sets, cp_to_targets)
|
||
|
|
+ outfile.write(target.generate_html(
|
||
|
|
+ index, context, metrics, flag_sets, cp_to_targets) + '\n')
|
||
|
|
|
||
|
|
- print >> outfile, _HTML_FOOTER
|
||
|
|
+ outfile.write(_HTML_FOOTER + '\n')
|
||
|
|
|
||
|
|
|
||
|
|
def _build_cp_to_targets(targets):
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: generate_dingbats_html.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_lang_font_table.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_lang_font_table.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_lang_font_table.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_lang_font_table.py 2019-07-09 16:49:24.267740057 +0200
|
||
|
|
@@ -55,14 +55,14 @@
|
||
|
|
families = noto_fonts.get_families(fonts).values()
|
||
|
|
|
||
|
|
def write_csv_header(outfile):
|
||
|
|
- print >> outfile, 'Code,Script,Style,UI,Font Name'
|
||
|
|
+ outfile.write('Code,Script,Style,UI,Font Name\n')
|
||
|
|
|
||
|
|
|
||
|
|
def write_csv(outfile, lang, script, style, ui, members):
|
||
|
|
if members:
|
||
|
|
- print >> outfile, ','.join(
|
||
|
|
+ outfile.write(','.join(
|
||
|
|
[lang, script, style, ui,
|
||
|
|
- noto_fonts.get_font_family_name(members[0].filepath)])
|
||
|
|
+ noto_fonts.get_font_family_name(members[0].filepath)]))
|
||
|
|
|
||
|
|
|
||
|
|
with open('lang_to_font_table.csv', 'w') as outfile:
|
||
|
|
@@ -87,4 +87,4 @@
|
||
|
|
ui_members)
|
||
|
|
|
||
|
|
if not found_font:
|
||
|
|
- print '## no font found for lang %s' % lang
|
||
|
|
+ print('## no font found for lang %s' % lang)
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: generate_lang_font_table.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_sample_from_exemplar.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_sample_from_exemplar.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_sample_from_exemplar.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_sample_from_exemplar.py 2019-07-09 16:46:07.585777023 +0200
|
||
|
|
@@ -36,10 +36,10 @@
|
||
|
|
|
||
|
|
try:
|
||
|
|
from icu import Locale, Collator
|
||
|
|
- print 'will use icu locale-specific order'
|
||
|
|
+ print('will use icu locale-specific order')
|
||
|
|
_HAVE_ICU = True
|
||
|
|
except ImportError as e:
|
||
|
|
- print 'will use default locale sort order'
|
||
|
|
+ print('will use default locale sort order')
|
||
|
|
_HAVE_ICU = False
|
||
|
|
|
||
|
|
NOTO_TOOLS = path.abspath(path.join(path.dirname(__file__), os.pardir))
|
||
|
|
@@ -64,33 +64,33 @@
|
||
|
|
exemplar_list = cldr_data.get_exemplar_from_file(path.join(data_dir, filename))
|
||
|
|
if not exemplar_list:
|
||
|
|
if _VERBOSE:
|
||
|
|
- print ' no exemplar list for %s' % path.join(data_dir, filename)
|
||
|
|
+ print(' no exemplar list for %s' % path.join(data_dir, filename))
|
||
|
|
continue
|
||
|
|
|
||
|
|
lsrv = cldr_data.loc_tag_to_lsrv(filename[:-4])
|
||
|
|
if not lsrv:
|
||
|
|
if _VERBOSE:
|
||
|
|
- print ' no lsrv for %s' % path.join(data_dir, filename)
|
||
|
|
+ print(' no lsrv for %s' % path.join(data_dir, filename))
|
||
|
|
continue
|
||
|
|
src = path.join(directory, filename)
|
||
|
|
script = lsrv[1]
|
||
|
|
if not script:
|
||
|
|
if _VERBOSE:
|
||
|
|
- print ' no script for %s' % path.join(data_dir, filename)
|
||
|
|
+ print(' no script for %s' % path.join(data_dir, filename))
|
||
|
|
continue
|
||
|
|
|
||
|
|
loc_tag = cldr_data.lsrv_to_loc_tag(lsrv)
|
||
|
|
loc_to_exemplar_info = script_map[script]
|
||
|
|
if loc_tag in loc_to_exemplar_info:
|
||
|
|
if _VERBOSE:
|
||
|
|
- print 'skipping %s, already have exemplars for %s from %s' % (
|
||
|
|
- src, loc_tag, loc_to_exemplar_info[loc_tag][1])
|
||
|
|
+ print('skipping %s, already have exemplars for %s from %s' % (
|
||
|
|
+ src, loc_tag, loc_to_exemplar_info[loc_tag][1]))
|
||
|
|
continue
|
||
|
|
|
||
|
|
# fix exemplars that look incorrect
|
||
|
|
if script == 'Arab' and 'd' in exemplar_list:
|
||
|
|
if _VERBOSE:
|
||
|
|
- print 'found \'d\' in %s for %s' % (src, lsrv)
|
||
|
|
+ print('found \'d\' in %s for %s' % (src, lsrv))
|
||
|
|
no_latin = True
|
||
|
|
else:
|
||
|
|
no_latin = False
|
||
|
|
@@ -118,8 +118,8 @@
|
||
|
|
exemplar_chars.add(cp)
|
||
|
|
fixed_exemplar_list.append(cp)
|
||
|
|
if len(dup_chars) > 0 and _VERBOSE:
|
||
|
|
- print 'duplicate exemplars in %s: %s' % (
|
||
|
|
- src, ', '.join([u'\u200e%s\u200e (%x)' % (cp, ord(cp)) for cp in dup_chars]))
|
||
|
|
+ print('duplicate exemplars in %s: %s' % (
|
||
|
|
+ src, ', '.join([u'\u200e%s\u200e (%x)' % (cp, ord(cp)) for cp in dup_chars])))
|
||
|
|
loc_to_exemplar_info[loc_tag] = (lsrv, src, tuple(fixed_exemplar_list))
|
||
|
|
|
||
|
|
# supplement with extra locale data
|
||
|
|
@@ -131,8 +131,8 @@
|
||
|
|
src = '[extra locale data]/%s' % loc_tag
|
||
|
|
if loc_tag in loc_to_exemplar_info:
|
||
|
|
if _VERBOSE:
|
||
|
|
- print 'skipping %s, already have exemplars for %s from %s' % (
|
||
|
|
- src, loc_tag, loc_to_exemplar_info[loc_tag][1])
|
||
|
|
+ print('skipping %s, already have exemplars for %s from %s' % (
|
||
|
|
+ src, loc_tag, loc_to_exemplar_info[loc_tag][1]))
|
||
|
|
continue
|
||
|
|
|
||
|
|
# restrict to letters, except for zsym
|
||
|
|
@@ -143,7 +143,7 @@
|
||
|
|
if 'Zsym' not in loc_tag:
|
||
|
|
filtered_exemplar_list = filter(accept_cp, exemplar_list)
|
||
|
|
if len(filtered_exemplar_list) != len(exemplar_list) and _VERBOSE:
|
||
|
|
- print 'filtered some characters from %s' % src
|
||
|
|
+ print('filtered some characters from %s' % src)
|
||
|
|
else:
|
||
|
|
filtered_exemplar_list = exemplar_list
|
||
|
|
loc_to_exemplar_info[loc_tag] = (lsrv, src, tuple(filtered_exemplar_list))
|
||
|
|
@@ -178,21 +178,21 @@
|
||
|
|
|
||
|
|
script_tag = '-' + script
|
||
|
|
if unique_chars:
|
||
|
|
- print '%s has %d unique chars: %s%s' % (
|
||
|
|
+ print('%s has %d unique chars: %s%s' % (
|
||
|
|
loc_tag, len(unique_chars), ' '.join(unique_chars[:100]),
|
||
|
|
- '...' if len(unique_chars) > 100 else '')
|
||
|
|
+ '...' if len(unique_chars) > 100 else ''))
|
||
|
|
if dual_chars:
|
||
|
|
- print '%s shares %d chars (%s%s) with 1 other lang: %s' % (
|
||
|
|
+ print('%s shares %d chars (%s%s) with 1 other lang: %s' % (
|
||
|
|
loc_tag, len(dual_chars), ' '.join(dual_chars[:20]),
|
||
|
|
'...' if len(dual_chars) > 20 else '',
|
||
|
|
- ', '.join(sorted([loc.replace(script_tag, '') for loc in dual_shared_with])))
|
||
|
|
+ ', '.join(sorted([loc.replace(script_tag, '') for loc in dual_shared_with]))))
|
||
|
|
if triple_chars:
|
||
|
|
- print '%s shares %d chars (%s%s) with 2 other langs: %s' % (
|
||
|
|
+ print('%s shares %d chars (%s%s) with 2 other langs: %s' % (
|
||
|
|
loc_tag, len(triple_chars), ' '.join(triple_chars[:20]),
|
||
|
|
'...' if len(triple_chars) > 20 else '',
|
||
|
|
- ', '.join(sorted([loc.replace(script_tag, '') for loc in triple_shared_with])))
|
||
|
|
+ ', '.join(sorted([loc.replace(script_tag, '') for loc in triple_shared_with]))))
|
||
|
|
if not (unique_chars or dual_chars or triple_chars):
|
||
|
|
- print '%s shares all chars with 3+ other langs' % loc_tag
|
||
|
|
+ print('%s shares all chars with 3+ other langs' % loc_tag)
|
||
|
|
|
||
|
|
|
||
|
|
def get_char_to_lang_map(loc_map):
|
||
|
|
@@ -202,8 +202,8 @@
|
||
|
|
exemplars = info[2]
|
||
|
|
for cp in exemplars:
|
||
|
|
if loc_tag in char_to_lang_map[cp]:
|
||
|
|
- print 'loc %s (from %s) already in char_to_lang_map for %s (%x)' % (
|
||
|
|
- loc_tag, info[1], cp, ord(cp))
|
||
|
|
+ print('loc %s (from %s) already in char_to_lang_map for %s (%x)' % (
|
||
|
|
+ loc_tag, info[1], cp, ord(cp)))
|
||
|
|
else:
|
||
|
|
char_to_lang_map[cp].append(loc_tag)
|
||
|
|
return char_to_lang_map
|
||
|
|
@@ -221,11 +221,11 @@
|
||
|
|
if num_shared_langs >= len(hist):
|
||
|
|
for shared_lang in char_to_lang_map[cp]:
|
||
|
|
if shared_lang not in loc_map:
|
||
|
|
- print 'loc map does not have \'%s\'!' % shared_lang
|
||
|
|
+ print('loc map does not have \'%s\'!' % shared_lang)
|
||
|
|
|
||
|
|
freq_list.append((num_shared_langs, cp))
|
||
|
|
if num_shared_langs >= len(hist):
|
||
|
|
- print 'num shared langs is %d but size of hist is %d' % (num_shared_langs, len(hist))
|
||
|
|
+ print('num shared langs is %d but size of hist is %d' % (num_shared_langs, len(hist)))
|
||
|
|
hist[num_shared_langs] += 1
|
||
|
|
freq_list.sort()
|
||
|
|
return [cp for nl, cp in freq_list], hist
|
||
|
|
@@ -241,14 +241,14 @@
|
||
|
|
without_script_str = ', '.join(sorted(without_script))
|
||
|
|
if count > limit:
|
||
|
|
without_script_str += '...'
|
||
|
|
- print u'char %s\u200e (%x): %d %s' % (cp, ord(cp), count, without_script_str)
|
||
|
|
- print 'total chars listed: %d' % len(char_to_lang_map)
|
||
|
|
+ print(u'char %s\u200e (%x): %d %s' % (cp, ord(cp), count, without_script_str))
|
||
|
|
+ print('total chars listed: %d' % len(char_to_lang_map))
|
||
|
|
|
||
|
|
|
||
|
|
def show_shared_langs_hist(hist):
|
||
|
|
# histogram - number of chars per number of shared languages
|
||
|
|
for i in range(1, len(hist)):
|
||
|
|
- print '[%3d] %3d %s' % (i, hist[i], 'x' * hist[i])
|
||
|
|
+ print('[%3d] %3d %s' % (i, hist[i], 'x' * hist[i]))
|
||
|
|
|
||
|
|
|
||
|
|
def get_upper_case_list(char_list):
|
||
|
|
@@ -272,11 +272,11 @@
|
||
|
|
if not subset:
|
||
|
|
break
|
||
|
|
tier_chars = sorted(subset)
|
||
|
|
- print 'tier %d: %s' % (tier, ' '.join(tier_chars))
|
||
|
|
+ print('tier %d: %s' % (tier, ' '.join(tier_chars)))
|
||
|
|
|
||
|
|
upper_case_chars = get_upper_case_list(tier_chars)
|
||
|
|
if upper_case_chars:
|
||
|
|
- print ' upper: ' + ' '.join(upper_case_chars)
|
||
|
|
+ print(' upper: ' + ' '.join(upper_case_chars))
|
||
|
|
|
||
|
|
|
||
|
|
def get_rare_char_info(char_to_lang_map, shared_lang_threshold):
|
||
|
|
@@ -304,7 +304,7 @@
|
||
|
|
script = lsrv[1]
|
||
|
|
if script not in _lang_for_script_map:
|
||
|
|
lang = lsrv[0]
|
||
|
|
- # print '%s lang => %s' % (script, lang)
|
||
|
|
+ # print('%s lang => %s' % (script, lang))
|
||
|
|
_lang_for_script_map[script] = lang
|
||
|
|
|
||
|
|
|
||
|
|
@@ -359,15 +359,15 @@
|
||
|
|
|
||
|
|
|
||
|
|
def show_selected_rare_chars(selected):
|
||
|
|
- print 'langs with rare chars by lang pop:'
|
||
|
|
+ print('langs with rare chars by lang pop:')
|
||
|
|
for lang_tag, chars in selected:
|
||
|
|
- print '%10s: %s' % (lang_tag, ', '.join(sorted(chars)))
|
||
|
|
+ print('%10s: %s' % (lang_tag, ', '.join(sorted(chars))))
|
||
|
|
|
||
|
|
|
||
|
|
def sort_for_script(cp_list, script):
|
||
|
|
lang = lang_for_script(script)
|
||
|
|
if not lang:
|
||
|
|
- print 'cannot sort for script, no lang for %s' % script
|
||
|
|
+ print('cannot sort for script, no lang for %s' % script)
|
||
|
|
return cp_list
|
||
|
|
if _HAVE_ICU:
|
||
|
|
from icu import Locale, Collator
|
||
|
|
@@ -388,7 +388,7 @@
|
||
|
|
if cased_sample:
|
||
|
|
cased_sample = ' '.join(cased_sample)
|
||
|
|
if _VERBOSE:
|
||
|
|
- print 'add case for %s' % script
|
||
|
|
+ print('add case for %s' % script)
|
||
|
|
return sample + '\n' + cased_sample
|
||
|
|
return sample
|
||
|
|
|
||
|
|
@@ -486,31 +486,31 @@
|
||
|
|
def generate_samples(dstdir, imgdir, summary):
|
||
|
|
if imgdir:
|
||
|
|
imgdir = tool_utils.ensure_dir_exists(imgdir)
|
||
|
|
- print 'writing images to %s' % imgdir
|
||
|
|
+ print('writing images to %s' % imgdir)
|
||
|
|
|
||
|
|
if dstdir:
|
||
|
|
dstdir = tool_utils.ensure_dir_exists(dstdir)
|
||
|
|
- print 'writing files to %s' % dstdir
|
||
|
|
+ print('writing files to %s' % dstdir)
|
||
|
|
|
||
|
|
verbose = summary
|
||
|
|
script_map = get_script_to_exemplar_data_map()
|
||
|
|
for script in sorted(script_map):
|
||
|
|
sample, info = generate_sample_for_script(script, script_map[script])
|
||
|
|
if summary:
|
||
|
|
- print
|
||
|
|
- print info
|
||
|
|
- print sample
|
||
|
|
+ print()
|
||
|
|
+ print(info)
|
||
|
|
+ print(sample)
|
||
|
|
|
||
|
|
if imgdir:
|
||
|
|
path = os.path.join(imgdir, 'und-%s_chars.png' % script)
|
||
|
|
- print 'writing image %s.png' % script
|
||
|
|
+ print('writing image %s.png' % script)
|
||
|
|
rtl = script in ['Adlm', 'Arab', 'Hebr', 'Nkoo', 'Syrc', 'Tfng', 'Thaa']
|
||
|
|
create_image.create_png(
|
||
|
|
sample, path, font_size=34, line_spacing=40, width=800, rtl=rtl)
|
||
|
|
|
||
|
|
if dstdir:
|
||
|
|
filename = 'und-%s_chars.txt' % script
|
||
|
|
- print 'writing data %s' % filename
|
||
|
|
+ print('writing data %s' % filename)
|
||
|
|
filepath = os.path.join(dstdir, filename)
|
||
|
|
with codecs.open(filepath, 'w', 'utf-8') as f:
|
||
|
|
f.write(sample + '\n')
|
||
|
|
@@ -531,7 +531,7 @@
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
if not args.save and not args.imgdir and not args.summary:
|
||
|
|
- print 'nothing to do.'
|
||
|
|
+ print('nothing to do.')
|
||
|
|
return
|
||
|
|
|
||
|
|
if args.verbose:
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: generate_sample_from_exemplar.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_sample_text.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_sample_text.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_sample_text.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_sample_text.py 2019-07-09 16:43:31.316395449 +0200
|
||
|
|
@@ -36,7 +36,7 @@
|
||
|
|
else:
|
||
|
|
chars.append(char_rep_to_code(arg))
|
||
|
|
chars = u' '.join([unichr(code) for code in chars])
|
||
|
|
- print chars.encode('UTF-8')
|
||
|
|
+ print(chars.encode('UTF-8'))
|
||
|
|
|
||
|
|
if __name__ == '__main__':
|
||
|
|
main(sys.argv)
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: generate_sample_text.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_sample_text_html.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_sample_text_html.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_sample_text_html.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_sample_text_html.py 2019-07-09 16:41:12.733830703 +0200
|
||
|
|
@@ -44,13 +44,13 @@
|
||
|
|
def generate_table(filename):
|
||
|
|
with codecs.open(filename, 'w', 'utf-8') as f:
|
||
|
|
script_to_samples = _get_script_to_samples()
|
||
|
|
- print >> f, _HTML_HEADER
|
||
|
|
- print >> f, '<table>'
|
||
|
|
- print >> f, '<tr><th>Script<br/>BCP<th>name<th>type<th>text'
|
||
|
|
+ f.write(_HTML_HEADER)
|
||
|
|
+ f.write('<table>\n')
|
||
|
|
+ f.write('<tr><th>Script<br/>BCP<th>name<th>type<th>text\n')
|
||
|
|
|
||
|
|
for script, samples in sorted(script_to_samples.iteritems()):
|
||
|
|
script_en = cldr_data.get_english_script_name(script)
|
||
|
|
- print >> f, '<tr><th colspan=4>%s' % script_en
|
||
|
|
+ f.write('<tr><th colspan=4>%s\n' % script_en)
|
||
|
|
for bcp, sample_type, sample_text in samples:
|
||
|
|
try:
|
||
|
|
lsrv = cldr_data.loc_tag_to_lsrv(bcp)
|
||
|
|
@@ -62,7 +62,7 @@
|
||
|
|
if bcp_en == 'Unknown Language' and sample_type == 'chars':
|
||
|
|
bcp_en = '(characters)'
|
||
|
|
except:
|
||
|
|
- print 'could not get english name for %s' % bcp
|
||
|
|
+ print('could not get english name for %s' % bcp)
|
||
|
|
bcp_en = bcp
|
||
|
|
|
||
|
|
cols = ['<tr>']
|
||
|
|
@@ -70,10 +70,10 @@
|
||
|
|
cols.append(bcp_en)
|
||
|
|
cols.append(sample_type)
|
||
|
|
cols.append(sample_text)
|
||
|
|
- print >> f, '<td>'.join(cols)
|
||
|
|
- print >> f, '<tr><td colspan=4> '
|
||
|
|
- print >> f, '</table>'
|
||
|
|
- print >> f, _HTML_FOOTER
|
||
|
|
+ f.write('<td>'.join(cols) + '\n')
|
||
|
|
+ f.write('<tr><td colspan=4> ')
|
||
|
|
+ f.write('</table>')
|
||
|
|
+ f.write(_HTML_FOOTER)
|
||
|
|
|
||
|
|
|
||
|
|
def _get_script_to_samples():
|
||
|
|
@@ -83,13 +83,13 @@
|
||
|
|
for f in sorted(os.listdir(sample_dir)):
|
||
|
|
base, ext = path.splitext(f)
|
||
|
|
if ext != '.txt' or '_' not in base:
|
||
|
|
- print 'skipping', f
|
||
|
|
+ print('skipping', f)
|
||
|
|
continue
|
||
|
|
bcp, sample_type = base.split('_')
|
||
|
|
try:
|
||
|
|
lang, script, region, variant = cldr_data.loc_tag_to_lsrv(bcp)
|
||
|
|
except:
|
||
|
|
- print 'bcp %s did not parse as lsrv' % bcp
|
||
|
|
+ print('bcp %s did not parse as lsrv' % bcp)
|
||
|
|
continue
|
||
|
|
if script == 'Latn':
|
||
|
|
continue
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: generate_sample_text_html.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_samples.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_samples.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_samples.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_samples.py 2019-07-09 16:28:39.952626989 +0200
|
||
|
|
@@ -158,8 +158,8 @@
|
||
|
|
ok_patterns = []
|
||
|
|
for pattern in select_patterns:
|
||
|
|
if pattern not in self.patterns:
|
||
|
|
- print 'No pattern named \'%s\' in %s' % (
|
||
|
|
- pattern, ', '.join(self.pattern_order))
|
||
|
|
+ print('No pattern named \'%s\' in %s' % (
|
||
|
|
+ pattern, ', '.join(self.pattern_order)))
|
||
|
|
continue
|
||
|
|
ok_patterns.append(pattern)
|
||
|
|
select_patterns = ok_patterns
|
||
|
|
@@ -176,7 +176,7 @@
|
||
|
|
with codecs.open(out_file, 'w', 'utf-8') as f:
|
||
|
|
f.write(output_text)
|
||
|
|
else:
|
||
|
|
- print output_text
|
||
|
|
+ print(output_text)
|
||
|
|
|
||
|
|
|
||
|
|
def _generate_output(self, output_lines, pattern, group, sep, label, sort):
|
||
|
|
@@ -365,12 +365,12 @@
|
||
|
|
for arg in value.split(','):
|
||
|
|
for expanded_arg in _expand_ranges(arg.strip()):
|
||
|
|
if expanded_arg in args:
|
||
|
|
- print 'The sequence "%s" is already in this group, ignoring it' % (
|
||
|
|
- 'U+%04X' % cp for cp in expanded_arg)
|
||
|
|
+ print('The sequence "%s" is already in this group, ignoring it' % (
|
||
|
|
+ 'U+%04X' % cp for cp in expanded_arg))
|
||
|
|
continue
|
||
|
|
args.append(expanded_arg)
|
||
|
|
except ValueError as e:
|
||
|
|
- print str(e)
|
||
|
|
+ print(str(e))
|
||
|
|
return None
|
||
|
|
|
||
|
|
if not args[-1]:
|
||
|
|
@@ -387,10 +387,10 @@
|
||
|
|
elif text[i] == ')':
|
||
|
|
count -= 1
|
||
|
|
if count < 0:
|
||
|
|
- print 'Unmatched close paren.'
|
||
|
|
+ print('Unmatched close paren.')
|
||
|
|
return None
|
||
|
|
if count > 0:
|
||
|
|
- print 'Unmatched open paren.'
|
||
|
|
+ print('Unmatched open paren.')
|
||
|
|
return None
|
||
|
|
return text
|
||
|
|
|
||
|
|
@@ -420,8 +420,8 @@
|
||
|
|
if name:
|
||
|
|
# angle brackets
|
||
|
|
if name not in groups:
|
||
|
|
- print 'Could not find "%s" in groups (%s)' % (
|
||
|
|
- name, ', '.join(sorted(groups)))
|
||
|
|
+ print('Could not find "%s" in groups (%s)' % (
|
||
|
|
+ name, ', '.join(sorted(groups))))
|
||
|
|
return None
|
||
|
|
pat_list.append(groups[name])
|
||
|
|
value = value[m.end():].strip()
|
||
|
|
@@ -454,7 +454,7 @@
|
||
|
|
continue
|
||
|
|
m = _LINE_RE.match(line)
|
||
|
|
if not m:
|
||
|
|
- print 'Could not parse "%s"' % original_lines[n]
|
||
|
|
+ print('Could not parse "%s"' % original_lines[n])
|
||
|
|
return None
|
||
|
|
name = m.group(1)
|
||
|
|
is_group = m.group(2) == '='
|
||
|
|
@@ -466,16 +466,16 @@
|
||
|
|
return None
|
||
|
|
value = _parse_pattern(value, groups)
|
||
|
|
if not value:
|
||
|
|
- print 'Could not parse values in "%s"' % original_lines[n]
|
||
|
|
+ print('Could not parse values in "%s"' % original_lines[n])
|
||
|
|
return None
|
||
|
|
if is_group:
|
||
|
|
if name in groups:
|
||
|
|
- print 'The group "%s" has already been defined' % name
|
||
|
|
+ print('The group "%s" has already been defined' % name)
|
||
|
|
return None
|
||
|
|
groups[name] = value
|
||
|
|
else:
|
||
|
|
if name in patterns:
|
||
|
|
- print 'The pattern "%s" has already been defined' % name
|
||
|
|
+ print('The pattern "%s" has already been defined' % name)
|
||
|
|
return None
|
||
|
|
pattern_order.append(name)
|
||
|
|
patterns[name] = value
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: generate_samples.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_waterfall_html.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_waterfall_html.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_waterfall_html.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_waterfall_html.py 2019-07-09 16:26:52.031744684 +0200
|
||
|
|
@@ -128,9 +128,9 @@
|
||
|
|
if out_file:
|
||
|
|
with codecs.open(out_file, 'w', 'utf-8') as f:
|
||
|
|
f.write(html_text)
|
||
|
|
- print 'wrote %s' % out_file
|
||
|
|
+ print('wrote %s' % out_file)
|
||
|
|
else:
|
||
|
|
- print html_text
|
||
|
|
+ print(html_text)
|
||
|
|
|
||
|
|
|
||
|
|
def _get_font_list(root, name_str):
|
||
|
|
@@ -169,7 +169,7 @@
|
||
|
|
samples.append(f)
|
||
|
|
break
|
||
|
|
|
||
|
|
- print sorted(samples)
|
||
|
|
+ print(sorted(samples))
|
||
|
|
# limit to scripts supported by all fonts
|
||
|
|
selected = []
|
||
|
|
for sample in samples:
|
||
|
|
@@ -201,7 +201,7 @@
|
||
|
|
raise Exception (
|
||
|
|
'found %d sample files (%s) but need exactly 1' % (
|
||
|
|
len(samples), ', '.join(sorted(samples))))
|
||
|
|
- print 'selected sample %s' % samples[0]
|
||
|
|
+ print('selected sample %s' % samples[0])
|
||
|
|
|
||
|
|
with codecs.open(path.join(sample_dir, samples[0]), 'r', 'utf-8') as f:
|
||
|
|
text = f.read()
|
||
|
|
@@ -217,8 +217,8 @@
|
||
|
|
if not font_names:
|
||
|
|
raise Exception('no fonts matching "%s" in %s' % (font_str, root))
|
||
|
|
|
||
|
|
- print 'found %d fonts under %s:\n %s' % (
|
||
|
|
- len(font_names), root, '\n '.join(sorted(font_names)))
|
||
|
|
+ print('found %d fonts under %s:\n %s' % (
|
||
|
|
+ len(font_names), root, '\n '.join(sorted(font_names))))
|
||
|
|
|
||
|
|
if not font_sizes:
|
||
|
|
font_sizes = [10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24, 28, 32]
|
||
|
|
@@ -230,7 +230,7 @@
|
||
|
|
out_file = path.abspath(out_file)
|
||
|
|
file_dir = tool_utils.ensure_dir_exists(path.dirname(out_file))
|
||
|
|
if path.exists(out_file):
|
||
|
|
- print 'file %s already exists, overwriting' % out_file
|
||
|
|
+ print('file %s already exists, overwriting' % out_file)
|
||
|
|
font_dir = tool_utils.ensure_dir_exists(path.join(file_dir, 'fonts'))
|
||
|
|
for font_name in font_names:
|
||
|
|
src = path.join(root, font_name)
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: generate_waterfall_html.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_website_2_data.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_website_2_data.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_website_2_data.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_website_2_data.py 2019-07-09 16:01:51.861488185 +0200
|
||
|
|
@@ -88,8 +88,8 @@
|
||
|
|
# via the website.
|
||
|
|
#
|
||
|
|
# We'll keep the representative font and not try to change it.
|
||
|
|
- print 'Family %s has %d hinted members but %d unhinted memberts' % (
|
||
|
|
- family_id, len(hinted_members), len(unhinted_members))
|
||
|
|
+ print('Family %s has %d hinted members but %d unhinted memberts' % (
|
||
|
|
+ family_id, len(hinted_members), len(unhinted_members)))
|
||
|
|
|
||
|
|
# The namedtuples are immutable, so we need to break them apart and reform
|
||
|
|
# them
|
||
|
|
@@ -130,9 +130,9 @@
|
||
|
|
for lang_scr in ['bal-Arab', 'hnd-Arab', 'hno-Arab', 'ks-Arab', 'lah-Arab',
|
||
|
|
'pa-Arab', 'skr-Arab', 'ur-Arab']:
|
||
|
|
if not lang_scr in lang_scrs:
|
||
|
|
- print 'Map nastaliq: %s not found' % lang_scr
|
||
|
|
+ print('Map nastaliq: %s not found' % lang_scr)
|
||
|
|
else:
|
||
|
|
- print 'added %s to nastaliq' % lang_scr
|
||
|
|
+ print('added %s to nastaliq' % lang_scr)
|
||
|
|
nastaliq_lang_scrs.add(lang_scr)
|
||
|
|
|
||
|
|
# Kufi patches:
|
||
|
|
@@ -143,10 +143,10 @@
|
||
|
|
kufi_lang_scrs = family_id_to_lang_scrs['kufi-arab']
|
||
|
|
for lang_scr in ['ur-Arab', 'khw-Arab', 'ks-Arab']:
|
||
|
|
if not lang_scr in lang_scrs:
|
||
|
|
- print 'Patch kufi: %s not found' % lang_scr
|
||
|
|
+ print('Patch kufi: %s not found' % lang_scr)
|
||
|
|
else:
|
||
|
|
kufi_lang_scrs.remove(lang_scr)
|
||
|
|
- print 'removed %s from kufi' % lang_scr
|
||
|
|
+ print('removed %s from kufi' % lang_scr)
|
||
|
|
if not kufi_lang_scrs:
|
||
|
|
break
|
||
|
|
|
||
|
|
@@ -157,10 +157,10 @@
|
||
|
|
hebr_lang_scrs = family_id_to_lang_scrs['sans-hebr']
|
||
|
|
for lang_scr in ['lad-Hebr']:
|
||
|
|
if not lang_scr in lang_scrs:
|
||
|
|
- print 'Patch lad: %s not found' % lang_scr
|
||
|
|
+ print('Patch lad: %s not found' % lang_scr)
|
||
|
|
else:
|
||
|
|
hebr_lang_scrs.remove(lang_scr)
|
||
|
|
- print 'removed %s from sans-hebr' % lang_scr
|
||
|
|
+ print('removed %s from sans-hebr' % lang_scr)
|
||
|
|
if not hebr_lang_scrs:
|
||
|
|
break;
|
||
|
|
|
||
|
|
@@ -171,16 +171,16 @@
|
||
|
|
jpan_lang_scrs = family_id_to_lang_scrs['sans-jpan']
|
||
|
|
for lang_scr in ['ja-Kana', 'ja-Hira']:
|
||
|
|
if not lang_scr in lang_scrs:
|
||
|
|
- print 'Patch jpan: %s not found' % lang_scr
|
||
|
|
+ print('Patch jpan: %s not found' % lang_scr)
|
||
|
|
else:
|
||
|
|
jpan_lang_scrs.remove(lang_scr)
|
||
|
|
- print 'removed %s from sans-jpan' % lang_scr
|
||
|
|
+ print('removed %s from sans-jpan' % lang_scr)
|
||
|
|
if not jpan_lang_scrs:
|
||
|
|
break;
|
||
|
|
|
||
|
|
for f, ls in sorted(family_id_to_lang_scrs.iteritems()):
|
||
|
|
if not ls:
|
||
|
|
- print '!family %s has no lang' % f
|
||
|
|
+ print('!family %s has no lang' % f)
|
||
|
|
|
||
|
|
return family_id_to_lang_scrs
|
||
|
|
|
||
|
|
@@ -221,8 +221,8 @@
|
||
|
|
full_key = sample_key + '-' + family_id
|
||
|
|
if full_key in tested_keys:
|
||
|
|
if full_key in failed_keys:
|
||
|
|
- print 'family %s already rejected sample %s (lang %s)' % (
|
||
|
|
- family_id, sample_key, lang_scr)
|
||
|
|
+ print('family %s already rejected sample %s (lang %s)' % (
|
||
|
|
+ family_id, sample_key, lang_scr))
|
||
|
|
continue
|
||
|
|
else:
|
||
|
|
failed_cps = set()
|
||
|
|
@@ -237,15 +237,15 @@
|
||
|
|
failed_cps.add(ord(cp))
|
||
|
|
|
||
|
|
if failed_cps:
|
||
|
|
- print 'family %s rejects sample %s for lang %s:\n %s' % (
|
||
|
|
+ print('family %s rejects sample %s for lang %s:\n %s' % (
|
||
|
|
family_id, sample_key, lang_scr,
|
||
|
|
'\n '.join('%04x (%s)' % (
|
||
|
|
- cp, unichr(cp)) for cp in sorted(failed_cps)))
|
||
|
|
+ cp, unichr(cp)) for cp in sorted(failed_cps))))
|
||
|
|
failed_keys.add(full_key)
|
||
|
|
continue
|
||
|
|
|
||
|
|
- # print 'family %s accepts sample %s for lang %s' % (
|
||
|
|
- # family_id, sample_key, lang_scr)
|
||
|
|
+ # print('family %s accepts sample %s for lang %s' % (
|
||
|
|
+ # family_id, sample_key, lang_scr))
|
||
|
|
|
||
|
|
sample_key_for_lang = sample_key
|
||
|
|
if sample_key not in sample_key_to_info:
|
||
|
|
@@ -253,16 +253,16 @@
|
||
|
|
break
|
||
|
|
|
||
|
|
if not sample_key_for_lang:
|
||
|
|
- print '%s has no sample to display in %s' % (lang_scr, family_id)
|
||
|
|
+ print('%s has no sample to display in %s' % (lang_scr, family_id))
|
||
|
|
else:
|
||
|
|
lang_scr_to_sample_key[lang_scr] = sample_key_for_lang
|
||
|
|
|
||
|
|
if not lang_scr_to_sample_key:
|
||
|
|
- print '!%s can display no samples for any lang of %s' % (
|
||
|
|
- family_id, ', '.join(sorted(family_id_to_lang_scrs[family_id])))
|
||
|
|
+ print('!%s can display no samples for any lang of %s' % (
|
||
|
|
+ family_id, ', '.join(sorted(family_id_to_lang_scrs[family_id]))))
|
||
|
|
else:
|
||
|
|
- print '%s has samples for %s langs' % (
|
||
|
|
- family_id, len(lang_scr_to_sample_key))
|
||
|
|
+ print('%s has samples for %s langs' % (
|
||
|
|
+ family_id, len(lang_scr_to_sample_key)))
|
||
|
|
family_id_to_lang_scr_to_sample_key[family_id] = lang_scr_to_sample_key
|
||
|
|
|
||
|
|
return (family_id_to_lang_scr_to_sample_key, sample_key_to_info)
|
||
|
|
@@ -274,7 +274,7 @@
|
||
|
|
if region == 'ZZ':
|
||
|
|
continue
|
||
|
|
if len(region) > 2: # e.g. world
|
||
|
|
- print 'skipping region %s' % region
|
||
|
|
+ print('skipping region %s' % region)
|
||
|
|
continue
|
||
|
|
lang_scrs = cldr_data.region_to_lang_scripts(region)
|
||
|
|
for lang_scr in lang_scrs:
|
||
|
|
@@ -294,7 +294,7 @@
|
||
|
|
warnings.add(lang_scr)
|
||
|
|
|
||
|
|
for lang_scr in sorted(warnings):
|
||
|
|
- print 'no mapping from %s to any region' % lang_scr
|
||
|
|
+ print('no mapping from %s to any region' % lang_scr)
|
||
|
|
|
||
|
|
return family_id_to_regions
|
||
|
|
|
||
|
|
@@ -427,12 +427,12 @@
|
||
|
|
continue
|
||
|
|
tag, attrib = line.split(':')
|
||
|
|
ATTRIBUTION_DATA[tag.strip()] = attrib.strip()
|
||
|
|
- print 'read %d lines of attribution data' % len(ATTRIBUTION_DATA)
|
||
|
|
+ print('read %d lines of attribution data' % len(ATTRIBUTION_DATA))
|
||
|
|
try:
|
||
|
|
return ATTRIBUTION_DATA[lang_scr_typ + '.txt']
|
||
|
|
except KeyError:
|
||
|
|
if not lang_scr_typ.endswith('_chars'):
|
||
|
|
- print 'no attribution for %s' % lang_scr_typ
|
||
|
|
+ print('no attribution for %s' % lang_scr_typ)
|
||
|
|
return 'none'
|
||
|
|
|
||
|
|
|
||
|
|
@@ -488,7 +488,7 @@
|
||
|
|
add_exemplars(und_scr)
|
||
|
|
|
||
|
|
if not sample_infos:
|
||
|
|
- print '!No sample info for %s' % lang_scr
|
||
|
|
+ print('!No sample info for %s' % lang_scr)
|
||
|
|
|
||
|
|
return sample_infos
|
||
|
|
|
||
|
|
@@ -515,8 +515,8 @@
|
||
|
|
lang_scr = lang + '-' + primary_script
|
||
|
|
|
||
|
|
if lang_scr not in lang_scrs:
|
||
|
|
- print 'default lang_scr \'%s\' not listed for family %s %s' % (
|
||
|
|
- lang_scr, family_id, lang_scrs)
|
||
|
|
+ print('default lang_scr \'%s\' not listed for family %s %s' % (
|
||
|
|
+ lang_scr, family_id, lang_scrs))
|
||
|
|
|
||
|
|
family_id_to_default_lang_scr[family_id] = lang_scr
|
||
|
|
return family_id_to_default_lang_scr
|
||
|
|
@@ -628,8 +628,8 @@
|
||
|
|
|
||
|
|
for key in debug:
|
||
|
|
if not key in _DEBUG_KEYS:
|
||
|
|
- print 'Bad debug key(s) found. Keys are:\n %s' % (
|
||
|
|
- '\n '.join(sorted(_DEBUG_KEYS)))
|
||
|
|
+ print('Bad debug key(s) found. Keys are:\n %s' % (
|
||
|
|
+ '\n '.join(sorted(_DEBUG_KEYS))))
|
||
|
|
raise ValueError()
|
||
|
|
|
||
|
|
return frozenset(debug)
|
||
|
|
@@ -659,7 +659,7 @@
|
||
|
|
|
||
|
|
def clean_target_dir(self):
|
||
|
|
if path.exists(self.target):
|
||
|
|
- print 'Removing the old website directory from %s...' % self.target
|
||
|
|
+ print('Removing the old website directory from %s...' % self.target)
|
||
|
|
shutil.rmtree(self.target)
|
||
|
|
|
||
|
|
def write_json(self, obj, name):
|
||
|
|
@@ -701,7 +701,7 @@
|
||
|
|
for font in fonts:
|
||
|
|
pairs.append((font.filepath, path.basename(font.filepath)))
|
||
|
|
tool_utils.generate_zip_with_7za_from_filepairs(pairs, zippath)
|
||
|
|
- print 'Created zip %s' % zippath
|
||
|
|
+ print('Created zip %s' % zippath)
|
||
|
|
return os.stat(zippath).st_size
|
||
|
|
|
||
|
|
def get_readme_keys(self):
|
||
|
|
@@ -866,8 +866,8 @@
|
||
|
|
1 for f in (family.hinted_members or family.unhinted_members)
|
||
|
|
if not f.is_UI)
|
||
|
|
if num_fonts not in [1, 2, 3, 4, 9, 12, 36, 72]:
|
||
|
|
- print 'family %s (%s) has %d fonts' % (k, family.name, num_fonts)
|
||
|
|
- print '\n'.join(f.filepath for f in sorted(family.hinted_members or family.unhinted_members))
|
||
|
|
+ print('family %s (%s) has %d fonts' % (k, family.name, num_fonts))
|
||
|
|
+ print('\n'.join(f.filepath for f in sorted(family.hinted_members or family.unhinted_members)))
|
||
|
|
fail = True
|
||
|
|
|
||
|
|
family_obj['fonts'] = num_fonts
|
||
|
|
@@ -1082,9 +1082,9 @@
|
||
|
|
image_location = path.join(self.samples, image_file_name)
|
||
|
|
if path.isfile(image_location):
|
||
|
|
# Don't rebuild images when continuing.
|
||
|
|
- print "Continue: assuming image file '%s' is valid." % image_location
|
||
|
|
+ print("Continue: assuming image file '%s' is valid." % image_location)
|
||
|
|
continue
|
||
|
|
- print 'create %s' % image_file_name
|
||
|
|
+ print('create %s' % image_file_name)
|
||
|
|
create_image.create_img(
|
||
|
|
sample_text,
|
||
|
|
image_location,
|
||
|
|
@@ -1106,7 +1106,7 @@
|
||
|
|
sample_key_to_info):
|
||
|
|
for family_id in sorted(family_id_to_lang_scr_to_sample_key):
|
||
|
|
family = families[family_id]
|
||
|
|
- print 'Generating images for %s...' % family.name
|
||
|
|
+ print('Generating images for %s...' % family.name)
|
||
|
|
default_lang = family_id_to_default_lang_scr[family_id]
|
||
|
|
lang_scr_to_sample_key = family_id_to_lang_scr_to_sample_key[family_id]
|
||
|
|
|
||
|
|
@@ -1146,8 +1146,8 @@
|
||
|
|
(path.join(CJK_DIR, filename), filename)]
|
||
|
|
tool_utils.generate_zip_with_7za_from_filepairs(pairs, zip_path)
|
||
|
|
newsize = os.stat(zip_path).st_size
|
||
|
|
- print "Wrote " + zip_path
|
||
|
|
- print 'Compressed from {0:,}B to {1:,}B.'.format(oldsize, newsize)
|
||
|
|
+ print("Wrote " + zip_path)
|
||
|
|
+ print('Compressed from {0:,}B to {1:,}B.'.format(oldsize, newsize))
|
||
|
|
|
||
|
|
# NotoSans/SerifCJK.ttc.zip already has been zipped for size reasons
|
||
|
|
# because git doesn't like very large files. So it wasn't in the above
|
||
|
|
@@ -1163,7 +1163,7 @@
|
||
|
|
for filename in ['NotoSansCJK.ttc.zip', 'NotoSerifCJK.ttc.zip']:
|
||
|
|
src_zip = path.join(CJK_DIR, filename)
|
||
|
|
if not path.isfile(src_zip):
|
||
|
|
- print 'Warning: %s does not exist' % filename
|
||
|
|
+ print('Warning: %s does not exist' % filename)
|
||
|
|
continue
|
||
|
|
pairs = [(SIL_LICENSE_LOC, 'LICENSE_OFL.txt')]
|
||
|
|
if os.stat(src_zip).st_size < 100000000: # lower than 100MB
|
||
|
|
@@ -1205,8 +1205,8 @@
|
||
|
|
|
||
|
|
tool_utils.generate_zip_with_7za_from_filepairs(pairs, zip_path)
|
||
|
|
newsize = os.stat(zip_path).st_size
|
||
|
|
- print "Wrote " + zip_path
|
||
|
|
- print 'Compressed from {0:,}B to {1:,}B.'.format(oldsize, newsize)
|
||
|
|
+ print("Wrote " + zip_path)
|
||
|
|
+ print('Compressed from {0:,}B to {1:,}B.'.format(oldsize, newsize))
|
||
|
|
|
||
|
|
def generate(self):
|
||
|
|
if self.clean:
|
||
|
|
@@ -1226,25 +1226,25 @@
|
||
|
|
check_families(families)
|
||
|
|
|
||
|
|
if 'families' in self.debug:
|
||
|
|
- print '\n#debug families'
|
||
|
|
- print '%d found' % len(families)
|
||
|
|
+ print('\n#debug families')
|
||
|
|
+ print('%d found' % len(families))
|
||
|
|
for i, (family_id, family) in enumerate(sorted(families.iteritems())):
|
||
|
|
- print '%2d] %s (%s, %s)' % (
|
||
|
|
- i, family_id, family.name, noto_fonts.get_family_filename(family))
|
||
|
|
+ print('%2d] %s (%s, %s)' % (
|
||
|
|
+ i, family_id, family.name, noto_fonts.get_family_filename(family)))
|
||
|
|
if family.hinted_members:
|
||
|
|
- print ' hinted: %s' % ', '.join(sorted(
|
||
|
|
- [path.basename(m.filepath) for m in family.hinted_members]))
|
||
|
|
+ print(' hinted: %s' % ', '.join(sorted(
|
||
|
|
+ [path.basename(m.filepath) for m in family.hinted_members])))
|
||
|
|
if family.unhinted_members:
|
||
|
|
- print ' unhinted: %s' % ', '.join(sorted(
|
||
|
|
- [path.basename(m.filepath) for m in family.unhinted_members]))
|
||
|
|
+ print(' unhinted: %s' % ', '.join(sorted(
|
||
|
|
+ [path.basename(m.filepath) for m in family.unhinted_members])))
|
||
|
|
|
||
|
|
script_to_family_ids = get_script_to_family_ids(families)
|
||
|
|
if 'script_to_family_ids' in self.debug:
|
||
|
|
- print '\n#debug script to family ids'
|
||
|
|
- print '%d found' % len(script_to_family_ids)
|
||
|
|
+ print('\n#debug script to family ids')
|
||
|
|
+ print('%d found' % len(script_to_family_ids))
|
||
|
|
for i, (script, family_ids) in enumerate(
|
||
|
|
sorted(script_to_family_ids.iteritems())):
|
||
|
|
- print '%2d] %s: %s' % (i, script, ', '.join(sorted(family_ids)))
|
||
|
|
+ print('%2d] %s: %s' % (i, script, ', '.join(sorted(family_ids))))
|
||
|
|
|
||
|
|
all_lang_scrs = set(['und-' + script for script in script_to_family_ids])
|
||
|
|
all_lang_scrs.update(lang_data.lang_scripts())
|
||
|
|
@@ -1252,7 +1252,7 @@
|
||
|
|
for lang_scr in sorted(all_lang_scrs):
|
||
|
|
lang, script = lang_scr.split('-')
|
||
|
|
if not script in script_to_family_ids:
|
||
|
|
- print 'no family supports script in %s' % lang_scr
|
||
|
|
+ print('no family supports script in %s' % lang_scr)
|
||
|
|
continue
|
||
|
|
|
||
|
|
sample_infos = get_sample_infos(lang_scr)
|
||
|
|
@@ -1262,70 +1262,70 @@
|
||
|
|
lang_scr_to_sample_infos[lang_scr] = sample_infos
|
||
|
|
|
||
|
|
if 'lang_scr_to_sample_infos' in self.debug:
|
||
|
|
- print '\n#debug lang+script to sample infos'
|
||
|
|
- print '%d found' % len(lang_scr_to_sample_infos)
|
||
|
|
+ print('\n#debug lang+script to sample infos')
|
||
|
|
+ print('%d found' % len(lang_scr_to_sample_infos))
|
||
|
|
for lang_scr, info_list in sorted(lang_scr_to_sample_infos.iteritems()):
|
||
|
|
for info in info_list:
|
||
|
|
- print '%s: %s, %s, len %d' % (
|
||
|
|
- lang_scr, info[2], info[1], len(info[0]))
|
||
|
|
+ print('%s: %s, %s, len %d' % (
|
||
|
|
+ lang_scr, info[2], info[1], len(info[0])))
|
||
|
|
|
||
|
|
family_id_to_lang_scrs = get_family_id_to_lang_scrs(
|
||
|
|
lang_scr_to_sample_infos.keys(), script_to_family_ids)
|
||
|
|
if 'family_id_to_lang_scrs' in self.debug:
|
||
|
|
- print '\n#debug family id to list of lang+script'
|
||
|
|
- print '%d found' % len(family_id_to_lang_scrs)
|
||
|
|
+ print('\n#debug family id to list of lang+script')
|
||
|
|
+ print('%d found' % len(family_id_to_lang_scrs))
|
||
|
|
for i, (family_id, lang_scrs) in enumerate(
|
||
|
|
sorted(family_id_to_lang_scrs.iteritems())):
|
||
|
|
- print '%3d] %s: (%d) %s' % (
|
||
|
|
- i, family_id, len(lang_scrs), ' '.join(sorted(lang_scrs)))
|
||
|
|
+ print('%3d] %s: (%d) %s' % (
|
||
|
|
+ i, family_id, len(lang_scrs), ' '.join(sorted(lang_scrs))))
|
||
|
|
|
||
|
|
family_id_to_lang_scr_to_sample_key, sample_key_to_info = (
|
||
|
|
get_family_id_to_lang_scr_to_sample_key(
|
||
|
|
family_id_to_lang_scrs, families, lang_scr_to_sample_infos))
|
||
|
|
if 'family_id_to_lang_scr_to_sample_key' in self.debug:
|
||
|
|
- print '\n#debug family id to map from lang+script to sample key'
|
||
|
|
- print '%d found' % len(family_id_to_lang_scr_to_sample_key)
|
||
|
|
+ print('\n#debug family id to map from lang+script to sample key')
|
||
|
|
+ print('%d found' % len(family_id_to_lang_scr_to_sample_key))
|
||
|
|
for i, (family_id, lang_scr_to_sample_key) in enumerate(
|
||
|
|
sorted(family_id_to_lang_scr_to_sample_key.iteritems())):
|
||
|
|
- print '%2d] %s (%d):' % (i, family_id, len(lang_scr_to_sample_key))
|
||
|
|
+ print('%2d] %s (%d):' % (i, family_id, len(lang_scr_to_sample_key)))
|
||
|
|
for j, (lang_scr, sample_key) in enumerate(
|
||
|
|
sorted(lang_scr_to_sample_key.iteritems())):
|
||
|
|
- print ' [%2d] %s: %s' % (j, lang_scr, sample_key)
|
||
|
|
+ print(' [%2d] %s: %s' % (j, lang_scr, sample_key))
|
||
|
|
if 'sample_key_to_info' in self.debug:
|
||
|
|
- print '\n#debug sample key to sample info'
|
||
|
|
- print '%d found' % len(sample_key_to_info)
|
||
|
|
+ print('\n#debug sample key to sample info')
|
||
|
|
+ print('%d found' % len(sample_key_to_info))
|
||
|
|
for i, (sample_key, info) in enumerate(
|
||
|
|
sorted(sample_key_to_info.iteritems())):
|
||
|
|
- print '%2d] %s: %s, len %d' % (
|
||
|
|
- i, sample_key, info[1], len(info[0]))
|
||
|
|
+ print('%2d] %s: %s, len %d' % (
|
||
|
|
+ i, sample_key, info[1], len(info[0])))
|
||
|
|
|
||
|
|
family_id_to_regions = get_family_id_to_regions(
|
||
|
|
family_id_to_lang_scr_to_sample_key)
|
||
|
|
if 'family_id_to_regions' in self.debug:
|
||
|
|
- print '\n#debug family id to regions'
|
||
|
|
- print '%d found' % len(family_id_to_regions)
|
||
|
|
+ print('\n#debug family id to regions')
|
||
|
|
+ print('%d found' % len(family_id_to_regions))
|
||
|
|
for i, (family_id, regions) in enumerate(
|
||
|
|
sorted(family_id_to_regions.iteritems())):
|
||
|
|
- print '%2d] %s: (%d) %s' % (
|
||
|
|
- i, family_id, len(regions), ', '.join(sorted(regions)))
|
||
|
|
+ print('%2d] %s: (%d) %s' % (
|
||
|
|
+ i, family_id, len(regions), ', '.join(sorted(regions))))
|
||
|
|
|
||
|
|
region_to_family_ids = get_region_to_family_ids(family_id_to_regions)
|
||
|
|
if 'region_to_family_ids' in self.debug:
|
||
|
|
- print '\n#debug region to family ids'
|
||
|
|
- print '%d found' % len(region_to_family_ids)
|
||
|
|
+ print('\n#debug region to family ids')
|
||
|
|
+ print('%d found' % len(region_to_family_ids))
|
||
|
|
for i, (region, family_ids) in enumerate(
|
||
|
|
sorted(region_to_family_ids.iteritems())):
|
||
|
|
- print '%2d] %s: (%d) %s' % (
|
||
|
|
- i, region, len(family_ids), ', '.join(sorted(family_ids)))
|
||
|
|
+ print('%2d] %s: (%d) %s' % (
|
||
|
|
+ i, region, len(family_ids), ', '.join(sorted(family_ids))))
|
||
|
|
|
||
|
|
family_id_to_default_lang_scr = get_family_id_to_default_lang_scr(
|
||
|
|
family_id_to_lang_scrs, families)
|
||
|
|
if 'family_id_to_default_lang_scr' in self.debug:
|
||
|
|
- print '\n#debug family id to default lang scr'
|
||
|
|
- print '%d found' % len(family_id_to_default_lang_scr)
|
||
|
|
+ print('\n#debug family id to default lang scr')
|
||
|
|
+ print('%d found' % len(family_id_to_default_lang_scr))
|
||
|
|
for i, (family_id, lang_scr) in enumerate(
|
||
|
|
sorted(family_id_to_default_lang_scr.iteritems())):
|
||
|
|
- print '%2d] %s: %s' % (i, family_id, lang_scr)
|
||
|
|
+ print('%2d] %s: %s' % (i, family_id, lang_scr))
|
||
|
|
|
||
|
|
region_data = get_region_lat_lng_data(region_to_family_ids.keys())
|
||
|
|
|
||
|
|
@@ -1365,16 +1365,16 @@
|
||
|
|
(default_lang_scr, family_id))
|
||
|
|
|
||
|
|
if error_list:
|
||
|
|
- print 'Errors:\n' + '\n '.join(error_list)
|
||
|
|
+ print('Errors:\n' + '\n '.join(error_list))
|
||
|
|
|
||
|
|
if error_list or self.no_build:
|
||
|
|
- print 'skipping build output'
|
||
|
|
+ print('skipping build output')
|
||
|
|
return
|
||
|
|
|
||
|
|
# build outputs
|
||
|
|
# zips are required for data
|
||
|
|
if self.no_zips and self.no_data:
|
||
|
|
- print 'skipping zip output'
|
||
|
|
+ print('skipping zip output')
|
||
|
|
else:
|
||
|
|
self.build_readmes()
|
||
|
|
|
||
|
|
@@ -1387,12 +1387,12 @@
|
||
|
|
self.build_subset_zips()
|
||
|
|
|
||
|
|
if self.no_css:
|
||
|
|
- print 'skipping css output'
|
||
|
|
+ print('skipping css output')
|
||
|
|
else:
|
||
|
|
family_css_info = self.build_css(families)
|
||
|
|
|
||
|
|
if self.no_data:
|
||
|
|
- print 'skipping data output'
|
||
|
|
+ print('skipping data output')
|
||
|
|
else:
|
||
|
|
self.build_data_json(family_id_to_lang_scr_to_sample_key,
|
||
|
|
families, family_zip_info, universal_zip_info,
|
||
|
|
@@ -1406,7 +1406,7 @@
|
||
|
|
self.build_misc_json(sample_key_to_info, region_data)
|
||
|
|
|
||
|
|
if self.no_images:
|
||
|
|
- print 'skipping image output'
|
||
|
|
+ print('skipping image output')
|
||
|
|
else:
|
||
|
|
self.build_images(family_id_to_lang_scr_to_sample_key,
|
||
|
|
families, family_id_to_default_lang_scr,
|
||
|
|
@@ -1459,7 +1459,7 @@
|
||
|
|
repo_info[repo_name] = message
|
||
|
|
|
||
|
|
for rname, v in sorted(repo_info.iteritems()):
|
||
|
|
- print '--%s--\n%s' % (rname, v)
|
||
|
|
+ print('--%s--\n%s' % (rname, v))
|
||
|
|
if errors:
|
||
|
|
raise Exception('Some repos are not clean\n' + '\n'.join(errors))
|
||
|
|
return repo_info
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: generate_website_2_data.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_website_data.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_website_data.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/generate_website_data.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/generate_website_data.py 2019-07-09 15:56:13.455054257 +0200
|
||
|
|
@@ -1,5 +1,5 @@
|
||
|
|
#!/usr/bin/env python
|
||
|
|
-# -*- coding: UTF-8 -*-
|
||
|
|
+# -*- coding: utf-8 -*-
|
||
|
|
#
|
||
|
|
# Copyright 2014 Google Inc. All rights reserved.
|
||
|
|
#
|
||
|
|
@@ -378,7 +378,7 @@
|
||
|
|
if sample_text is not None:
|
||
|
|
return sample_text
|
||
|
|
|
||
|
|
- raise ValueError, 'language=%s script=%s' % (language, script)
|
||
|
|
+ raise ValueError('language=%s script=%s' % (language, script))
|
||
|
|
|
||
|
|
|
||
|
|
def xml_to_dict(element):
|
||
|
|
@@ -419,7 +419,7 @@
|
||
|
|
name = '%s (%s script)' % (
|
||
|
|
english_language_name[lang],
|
||
|
|
english_script_name[script])
|
||
|
|
- print "Constructing name '%s' for %s." % (name, lang_scr)
|
||
|
|
+ print("Constructing name '%s' for %s." % (name, lang_scr))
|
||
|
|
return name
|
||
|
|
|
||
|
|
used_in_regions = collections.defaultdict(set)
|
||
|
|
@@ -586,7 +586,7 @@
|
||
|
|
try:
|
||
|
|
script = find_likely_script(language)
|
||
|
|
except KeyError:
|
||
|
|
- print "no likely script for %s" % language
|
||
|
|
+ print("no likely script for %s" % language)
|
||
|
|
continue
|
||
|
|
|
||
|
|
lang_object['name'] = get_english_language_name(lang_scr)
|
||
|
|
@@ -716,11 +716,11 @@
|
||
|
|
|
||
|
|
|
||
|
|
def compress(filepath, compress_function):
|
||
|
|
- print 'Compressing %s.' % filepath
|
||
|
|
+ print('Compressing %s.' % filepath)
|
||
|
|
oldsize = os.stat(filepath).st_size
|
||
|
|
compress_function(filepath)
|
||
|
|
newsize = os.stat(filepath).st_size
|
||
|
|
- print 'Compressed from {0:,}B to {1:,}B.'.format(oldsize, newsize)
|
||
|
|
+ print('Compressed from {0:,}B to {1:,}B.'.format(oldsize, newsize))
|
||
|
|
|
||
|
|
|
||
|
|
zip_contents_cache = {}
|
||
|
|
@@ -890,7 +890,7 @@
|
||
|
|
'weight': css_weight(font.weight),
|
||
|
|
})
|
||
|
|
if len(font_list) not in [1, 2, 4, 7]:
|
||
|
|
- print key, font_list
|
||
|
|
+ print(key, font_list)
|
||
|
|
assert len(font_list) in [1, 2, 4, 7]
|
||
|
|
family_object['fonts'] = font_list
|
||
|
|
|
||
|
|
@@ -921,8 +921,8 @@
|
||
|
|
(SIL_LICENSE_LOC, 'LICENSE_CJK.txt')]
|
||
|
|
tool_utils.generate_zip_with_7za_from_filepairs(pairs, zip_path)
|
||
|
|
newsize = os.stat(zip_path).st_size
|
||
|
|
- print "Wrote " + zip_path
|
||
|
|
- print 'Compressed from {0:,}B to {1:,}B.'.format(oldsize, newsize)
|
||
|
|
+ print("Wrote " + zip_path)
|
||
|
|
+ print('Compressed from {0:,}B to {1:,}B.'.format(oldsize, newsize))
|
||
|
|
shutil.copy2(path.join(CJK_DIR, 'NotoSansCJK.ttc.zip'),
|
||
|
|
path.join(pkg_dir, 'NotoSansCJK.ttc.zip'))
|
||
|
|
|
||
|
|
@@ -932,7 +932,7 @@
|
||
|
|
for family_key in data_object['family']:
|
||
|
|
family_obj = data_object['family'][family_key]
|
||
|
|
font_family_name = family_obj['name']
|
||
|
|
- print 'Generating images for %s...' % font_family_name
|
||
|
|
+ print('Generating images for %s...' % font_family_name)
|
||
|
|
is_cjk_family = (
|
||
|
|
family_key.endswith('-hans') or
|
||
|
|
family_key.endswith('-hant') or
|
||
|
|
@@ -954,7 +954,7 @@
|
||
|
|
image_location = path.join(image_dir, image_file_name)
|
||
|
|
if path.isfile(image_location):
|
||
|
|
# Don't rebuild images when continuing.
|
||
|
|
- print "Continue: assuming image file '%s' is valid." % image_location
|
||
|
|
+ print("Continue: assuming image file '%s' is valid." % image_location)
|
||
|
|
continue
|
||
|
|
create_image.create_png(
|
||
|
|
sample_text,
|
||
|
|
@@ -992,7 +992,7 @@
|
||
|
|
if not args.continuing:
|
||
|
|
if path.exists(OUTPUT_DIR):
|
||
|
|
assert path.isdir(OUTPUT_DIR)
|
||
|
|
- print 'Removing the old website directory...'
|
||
|
|
+ print('Removing the old website directory...')
|
||
|
|
shutil.rmtree(OUTPUT_DIR)
|
||
|
|
os.mkdir(OUTPUT_DIR)
|
||
|
|
os.mkdir(path.join(OUTPUT_DIR, 'pkgs'))
|
||
|
|
@@ -1004,25 +1004,25 @@
|
||
|
|
os.mkdir(path.join(OUTPUT_DIR, 'images', 'samples'))
|
||
|
|
os.mkdir(path.join(OUTPUT_DIR, 'js'))
|
||
|
|
|
||
|
|
- print 'Finding all fonts...'
|
||
|
|
+ print('Finding all fonts...')
|
||
|
|
find_fonts()
|
||
|
|
|
||
|
|
- print 'Parsing CLDR data...'
|
||
|
|
+ print('Parsing CLDR data...')
|
||
|
|
parse_english_labels()
|
||
|
|
parse_supplemental_data()
|
||
|
|
|
||
|
|
for target_platform in ['windows', 'linux', 'other']:
|
||
|
|
- print 'Target platform %s:' % target_platform
|
||
|
|
+ print('Target platform %s:' % target_platform)
|
||
|
|
|
||
|
|
output_object = {}
|
||
|
|
- print 'Generating data objects and CSS...'
|
||
|
|
+ print('Generating data objects and CSS...')
|
||
|
|
output_object['region'] = create_regions_object()
|
||
|
|
output_object['lang'] = create_langs_object()
|
||
|
|
|
||
|
|
output_object['family'], all_font_files = create_families_object(
|
||
|
|
target_platform)
|
||
|
|
|
||
|
|
- print 'Creating comprehensive zip file...'
|
||
|
|
+ print('Creating comprehensive zip file...')
|
||
|
|
output_object['pkg'] = create_package_object(
|
||
|
|
all_font_files, target_platform)
|
||
|
|
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: generate_website_data.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/grab_adobe_download.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/grab_adobe_download.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/grab_adobe_download.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/grab_adobe_download.py 2019-07-09 15:51:00.605350977 +0200
|
||
|
|
@@ -62,7 +62,7 @@
|
||
|
|
def unzip_to_directory_tree(drop_dir, filepath):
|
||
|
|
skip_re = re.compile('.*/OTF-Fallback/.*')
|
||
|
|
zf = zipfile.ZipFile(filepath, 'r')
|
||
|
|
- print 'extracting files from %s to %s' % (filepath, drop_dir)
|
||
|
|
+ print('extracting files from %s to %s' % (filepath, drop_dir))
|
||
|
|
count = 0
|
||
|
|
for name in zf.namelist():
|
||
|
|
# skip names representing portions of the path
|
||
|
|
@@ -75,14 +75,14 @@
|
||
|
|
try:
|
||
|
|
data = zf.read(name)
|
||
|
|
except KeyError:
|
||
|
|
- print 'did not find %s in zipfile' % name
|
||
|
|
+ print('did not find %s in zipfile' % name)
|
||
|
|
continue
|
||
|
|
dst_file = os.path.join(drop_dir, os.path.basename(name))
|
||
|
|
with open(dst_file, 'wb') as f:
|
||
|
|
f.write(data)
|
||
|
|
count += 1
|
||
|
|
- print 'extracted \'%s\'' % name
|
||
|
|
- print 'extracted %d files' % count
|
||
|
|
+ print('extracted \'%s\'' % name)
|
||
|
|
+ print('extracted %d files' % count)
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: grab_adobe_download.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/grab_download.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/grab_download.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/grab_download.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/grab_download.py 2019-07-09 15:49:26.580341788 +0200
|
||
|
|
@@ -47,13 +47,13 @@
|
||
|
|
|
||
|
|
for f in files:
|
||
|
|
if not os.path.exists(f):
|
||
|
|
- print 'file \'%s\' does not exist, skipping' % f
|
||
|
|
+ print('file \'%s\' does not exist, skipping' % f)
|
||
|
|
continue
|
||
|
|
|
||
|
|
filename = os.path.basename(f)
|
||
|
|
result = name_date_re.match(filename)
|
||
|
|
if not result:
|
||
|
|
- print 'could not parse %s, skipping' % f
|
||
|
|
+ print('could not parse %s, skipping' % f)
|
||
|
|
continue
|
||
|
|
|
||
|
|
name = result.group(1)
|
||
|
|
@@ -64,7 +64,7 @@
|
||
|
|
zip_filename = os.path.join(zip_dir, filename)
|
||
|
|
if os.path.exists(drop_dir):
|
||
|
|
if os.path.exists(zip_filename):
|
||
|
|
- print 'already have a %s drop and zip for %s' % (src_vendor, filename)
|
||
|
|
+ print('already have a %s drop and zip for %s' % (src_vendor, filename))
|
||
|
|
continue
|
||
|
|
else:
|
||
|
|
# clean up, assume needs rebuild
|
||
|
|
@@ -72,14 +72,14 @@
|
||
|
|
else:
|
||
|
|
if os.path.exists(zip_filename):
|
||
|
|
if os.path.realpath(f) != os.path.realpath(zip_filename):
|
||
|
|
- print 'already have a zip file named %s for %s' % (zip_filename, f)
|
||
|
|
+ print('already have a zip file named %s for %s' % (zip_filename, f))
|
||
|
|
continue
|
||
|
|
|
||
|
|
os.mkdir(drop_dir)
|
||
|
|
extract_fn(drop_dir, f)
|
||
|
|
|
||
|
|
if not os.path.exists(zip_filename):
|
||
|
|
- print 'writing %s to %s' % (f, zip_filename)
|
||
|
|
+ print('writing %s to %s' % (f, zip_filename))
|
||
|
|
shutil.copy2(f, zip_filename)
|
||
|
|
|
||
|
|
|
||
|
|
@@ -94,7 +94,7 @@
|
||
|
|
continue
|
||
|
|
filelist.append(path)
|
||
|
|
if not filelist:
|
||
|
|
- print "no files in %s matched '%s'" % (src, namere)
|
||
|
|
+ print("no files in %s matched '%s'" % (src, namere))
|
||
|
|
return filelist
|
||
|
|
|
||
|
|
|
||
|
|
@@ -120,13 +120,13 @@
|
||
|
|
The dest directory must exist and should have 'zips' and 'drops' subdirs."""
|
||
|
|
|
||
|
|
if not src_vendor:
|
||
|
|
- print 'must define src_vendor'
|
||
|
|
+ print('must define src_vendor')
|
||
|
|
return
|
||
|
|
if not name_date_re:
|
||
|
|
- print 'must define name_date_re'
|
||
|
|
+ print('must define name_date_re')
|
||
|
|
return
|
||
|
|
if not extract_fn:
|
||
|
|
- print 'must define extract_fn'
|
||
|
|
+ print('must define extract_fn')
|
||
|
|
return
|
||
|
|
|
||
|
|
default_srcdir = default_params.get('default_srcdir')
|
||
|
|
@@ -146,12 +146,12 @@
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
if not os.path.exists(args.dstdir):
|
||
|
|
- print '%s does not exists or is not a directory' % args.dstdir
|
||
|
|
+ print('%s does not exists or is not a directory' % args.dstdir)
|
||
|
|
return
|
||
|
|
|
||
|
|
if not args.srcs:
|
||
|
|
if not os.path.isdir(args.srcdir):
|
||
|
|
- print '%s does not exist or is not a directory' % args.srcdir
|
||
|
|
+ print('%s does not exist or is not a directory' % args.srcdir)
|
||
|
|
return
|
||
|
|
filelist = matching_files_in_dir(args.srcdir, args.name)
|
||
|
|
else:
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: grab_download.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/grab_mt_download.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/grab_mt_download.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/grab_mt_download.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/grab_mt_download.py 2019-07-09 15:48:39.012843036 +0200
|
||
|
|
@@ -62,14 +62,14 @@
|
||
|
|
os.mkdir(dstdir)
|
||
|
|
with open(os.path.join(dstdir, filename), 'wb') as f:
|
||
|
|
f.write(data)
|
||
|
|
- print 'extracted \'%s\' into %s' % (filename, subdir)
|
||
|
|
+ print('extracted \'%s\' into %s' % (filename, subdir))
|
||
|
|
|
||
|
|
|
||
|
|
def unzip_to_directory_tree(drop_dir, filepath):
|
||
|
|
hint_rx = re.compile(r'_((?:un)?hinted)/(.+)')
|
||
|
|
plain_rx = re.compile(r'[^/]+')
|
||
|
|
zf = zipfile.ZipFile(filepath, 'r')
|
||
|
|
- print 'extracting files from %s to %s' % (filepath, drop_dir)
|
||
|
|
+ print('extracting files from %s to %s' % (filepath, drop_dir))
|
||
|
|
count = 0
|
||
|
|
mapped_names = []
|
||
|
|
unmapped = []
|
||
|
|
@@ -81,7 +81,7 @@
|
||
|
|
try:
|
||
|
|
data = zf.read(name)
|
||
|
|
except KeyError:
|
||
|
|
- print 'did not find %s in zipfile' % name
|
||
|
|
+ print('did not find %s in zipfile' % name)
|
||
|
|
continue
|
||
|
|
|
||
|
|
result = hint_rx.search(name)
|
||
|
|
@@ -95,7 +95,7 @@
|
||
|
|
|
||
|
|
result = plain_rx.match(name)
|
||
|
|
if not result:
|
||
|
|
- print "subdir structure without hint/unhint: '%s'" % name
|
||
|
|
+ print("subdir structure without hint/unhint: '%s'" % name)
|
||
|
|
continue
|
||
|
|
|
||
|
|
# we have to figure out where it goes.
|
||
|
|
@@ -131,7 +131,7 @@
|
||
|
|
write_data_to_file(data, drop_dir, subdir, name)
|
||
|
|
count += 1
|
||
|
|
|
||
|
|
- print 'extracted %d files' % count
|
||
|
|
+ print('extracted %d files' % count)
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: grab_mt_download.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/lang_data.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/lang_data.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/lang_data.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/lang_data.py 2019-07-09 15:47:30.001570365 +0200
|
||
|
|
@@ -1,5 +1,5 @@
|
||
|
|
#!/usr/bin/env python
|
||
|
|
-# -*- coding: UTF-8 -*-
|
||
|
|
+# -*- coding: utf-8 -*-
|
||
|
|
#
|
||
|
|
# Copyright 2015 Google Inc. All rights reserved.
|
||
|
|
#
|
||
|
|
@@ -40,7 +40,7 @@
|
||
|
|
# controls printing of debug/trace information
|
||
|
|
# normally disabled
|
||
|
|
def _log(msg):
|
||
|
|
- # print >> sys.stderr, '#lang_data: ' + msg
|
||
|
|
+ # sys.stderr.write('#lang_data: ' + msg + '\n')
|
||
|
|
pass
|
||
|
|
|
||
|
|
def is_excluded_script(script_code):
|
||
|
|
@@ -290,34 +290,34 @@
|
||
|
|
|
||
|
|
def main():
|
||
|
|
lang_data = _get_lang_data()
|
||
|
|
- print
|
||
|
|
- print '--------'
|
||
|
|
+ print()
|
||
|
|
+ print('--------')
|
||
|
|
|
||
|
|
langs_without_scripts = _langs_with_no_scripts(lang_data)
|
||
|
|
if langs_without_scripts:
|
||
|
|
- print 'langs without scripts: ' + ', '.join(sorted(langs_without_scripts))
|
||
|
|
+ print('langs without scripts: ' + ', '.join(sorted(langs_without_scripts)))
|
||
|
|
_remove_keys_from_dict(langs_without_scripts, lang_data)
|
||
|
|
- print
|
||
|
|
+ print()
|
||
|
|
|
||
|
|
- print 'lang data'
|
||
|
|
+ print('lang data')
|
||
|
|
for k in sorted(lang_data):
|
||
|
|
used, unused = lang_data[k]
|
||
|
|
used_msg = 'used: ' + ', '.join(sorted(used)) if used else None
|
||
|
|
unused_msg = 'unused: ' + ', '.join(sorted(unused)) if unused else None
|
||
|
|
msg = '; '.join([m for m in (used_msg, unused_msg) if m])
|
||
|
|
- print k, msg
|
||
|
|
+ print(k, msg)
|
||
|
|
|
||
|
|
- print
|
||
|
|
- print 'lang_script to names'
|
||
|
|
+ print()
|
||
|
|
+ print('lang_script to names')
|
||
|
|
lang_script_to_names = _get_lang_script_to_names()
|
||
|
|
for t in sorted(lang_script_to_names.iteritems()):
|
||
|
|
- print '%s: %s' % t
|
||
|
|
+ print('%s: %s' % t)
|
||
|
|
|
||
|
|
- print
|
||
|
|
- print 'script to default lang'
|
||
|
|
+ print()
|
||
|
|
+ print('script to default lang')
|
||
|
|
script_to_default_lang = _get_script_to_default_lang()
|
||
|
|
for t in sorted(script_to_default_lang.iteritems()):
|
||
|
|
- print '%s: %s' % t
|
||
|
|
+ print('%s: %s' % t)
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == '__main__':
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: lang_data.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/lint_cmap_reqs.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/lint_cmap_reqs.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/lint_cmap_reqs.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/lint_cmap_reqs.py 2019-07-09 15:45:37.397757323 +0200
|
||
|
|
@@ -115,7 +115,7 @@
|
||
|
|
needed_chars |= set([0, 0xd, 0x20])
|
||
|
|
|
||
|
|
if verbose:
|
||
|
|
- print >> sys.stderr, script,
|
||
|
|
+ sys.stderr.write(script + '\n')
|
||
|
|
|
||
|
|
needed_chars &= unicode_data.defined_characters(version=unicode_version)
|
||
|
|
|
||
|
|
@@ -156,7 +156,7 @@
|
||
|
|
if script[0] < 'A' or script[0] > 'Z':
|
||
|
|
bad_scripts.append(script)
|
||
|
|
if bad_scripts:
|
||
|
|
- print 'bad scripts: %s' % ', '.join(bad_scripts)
|
||
|
|
+ print('bad scripts: %s' % ', '.join(bad_scripts))
|
||
|
|
raise ValueError('bad scripts')
|
||
|
|
|
||
|
|
return set(scripts)
|
||
|
|
@@ -211,10 +211,10 @@
|
||
|
|
if args.outfile:
|
||
|
|
if args.outfile == '-default-':
|
||
|
|
args.outfile = 'lint_cmap_%s.xml' % args.unicode_version
|
||
|
|
- print >> sys.stderr, 'writing %s' % args.outfile
|
||
|
|
+ sys.stderr.write('writing %s\n' % args.outfile)
|
||
|
|
cmap_data.write_cmap_data_file(cmapdata, args.outfile, pretty=True)
|
||
|
|
else:
|
||
|
|
- print cmap_data.write_cmap_data(cmapdata, pretty=True)
|
||
|
|
+ print(cmap_data.write_cmap_data(cmapdata, pretty=True))
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
main()
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: lint_cmap_reqs.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/lint_config.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/lint_config.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/lint_config.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/lint_config.py 2019-07-09 18:07:40.238943767 +0200
|
||
|
|
@@ -156,7 +156,7 @@
|
||
|
|
def __init__(self, accept_if_in, intset):
|
||
|
|
self.accept_if_in = accept_if_in
|
||
|
|
self.intset = intset
|
||
|
|
- # print 'IntSetFilter %s %s' % ('only' if accept_if_in else 'except', intset)
|
||
|
|
+ # print('IntSetFilter %s %s' % ('only' if accept_if_in else 'except', intset))
|
||
|
|
|
||
|
|
def accept(self, cp):
|
||
|
|
return self.accept_if_in == (cp in self.intset)
|
||
|
|
@@ -468,7 +468,7 @@
|
||
|
|
arg_type = m.group(4)
|
||
|
|
comment = m.group(5)
|
||
|
|
|
||
|
|
- while line_indent <= indent[0]:
|
||
|
|
+ while len(line_indent) <= indent[0]:
|
||
|
|
if indent[2]:
|
||
|
|
indent = indent[2]
|
||
|
|
else:
|
||
|
|
@@ -479,8 +479,8 @@
|
||
|
|
else:
|
||
|
|
tag = tag_part
|
||
|
|
tag_data[tag] = (relation, arg_type, comment)
|
||
|
|
- if line_indent > indent[0]:
|
||
|
|
- indent = (line_indent, tag, indent)
|
||
|
|
+ if len(line_indent) > indent[0]:
|
||
|
|
+ indent = (len(line_indent), tag, indent)
|
||
|
|
return tag_data
|
||
|
|
|
||
|
|
tag_data = _process_data(data)
|
||
|
|
@@ -764,11 +764,11 @@
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
if not (args.tags or args.comments or args.filters or args.spec or args.parsefile):
|
||
|
|
- print 'nothing to do.'
|
||
|
|
+ print('nothing to do.')
|
||
|
|
return
|
||
|
|
|
||
|
|
if args.spec:
|
||
|
|
- print spec_format
|
||
|
|
+ print(spec_format)
|
||
|
|
return
|
||
|
|
|
||
|
|
for tag in sorted(TestSpec.tag_set):
|
||
|
|
@@ -780,14 +780,14 @@
|
||
|
|
filter = None
|
||
|
|
show_tag = args.tags or comment or filter
|
||
|
|
if show_tag:
|
||
|
|
- print tag
|
||
|
|
+ print(tag)
|
||
|
|
if filter:
|
||
|
|
- print ' ' + filter
|
||
|
|
+ print(' ' + filter)
|
||
|
|
if comment:
|
||
|
|
- print ' -- ' + comment
|
||
|
|
+ print(' -- ' + comment)
|
||
|
|
|
||
|
|
if args.parsefile:
|
||
|
|
- print parse_spec_file(args.parsefile)
|
||
|
|
+ print(parse_spec_file(args.parsefile))
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == '__main__':
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: lint_config.py.~1~
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: lint_config.py.~2~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/match_font_names.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/match_font_names.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/match_font_names.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/match_font_names.py 2019-07-09 15:42:45.067573875 +0200
|
||
|
|
@@ -30,7 +30,7 @@
|
||
|
|
def match_files(src_dir, names):
|
||
|
|
matched_files = set()
|
||
|
|
src_dir = tool_utils.resolve_path(src_dir)
|
||
|
|
- print '# root: %s' % src_dir
|
||
|
|
+ print('# root: %s' % src_dir)
|
||
|
|
name_re = _build_regex(names)
|
||
|
|
for root, dirs, files in os.walk(src_dir):
|
||
|
|
effective_root = root[len(src_dir)+1:]
|
||
|
|
@@ -44,7 +44,7 @@
|
||
|
|
if not names:
|
||
|
|
return
|
||
|
|
for n in names:
|
||
|
|
- print n
|
||
|
|
+ print(n)
|
||
|
|
|
||
|
|
|
||
|
|
def _collect_names(names):
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: match_font_names.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/missing_coverage.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/missing_coverage.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/missing_coverage.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/missing_coverage.py 2019-07-09 15:39:59.796316020 +0200
|
||
|
|
@@ -38,18 +38,18 @@
|
||
|
|
|
||
|
|
|
||
|
|
def show_cps_by_block(cps):
|
||
|
|
- print '%d missing codepoints' % len(cps)
|
||
|
|
+ print('%d missing codepoints' % len(cps))
|
||
|
|
block = None
|
||
|
|
for cp in sorted(cps):
|
||
|
|
new_block = unicode_data.block(cp)
|
||
|
|
if new_block != block:
|
||
|
|
- print '# %s' % new_block
|
||
|
|
+ print('# %s' % new_block)
|
||
|
|
block = new_block
|
||
|
|
- print '%5s %s' % ('%04x' % cp, unicode_data.name(cp))
|
||
|
|
+ print('%5s %s' % ('%04x' % cp, unicode_data.name(cp)))
|
||
|
|
|
||
|
|
|
||
|
|
def display_missing(cmap_file):
|
||
|
|
- print 'Checking data in %s' % cmap_file
|
||
|
|
+ print('Checking data in %s' % cmap_file)
|
||
|
|
filename = tool_utils.resolve_path(cmap_file)
|
||
|
|
cps = _covered_cps(filename)
|
||
|
|
defined_cps = unicode_data.defined_characters(version=9.0)
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: missing_coverage.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/mti_cmap_data.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/mti_cmap_data.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/mti_cmap_data.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/mti_cmap_data.py 2019-07-09 15:38:35.605203492 +0200
|
||
|
|
@@ -94,7 +94,7 @@
|
||
|
|
if v[-1] == '*':
|
||
|
|
xdata[i].add(int(v[:-1], 16))
|
||
|
|
elif v[-1] == '+':
|
||
|
|
- print '> %s added %s' % (header[i], v[:-1])
|
||
|
|
+ print('> %s added %s' % (header[i], v[:-1]))
|
||
|
|
data[i].add(int(v[:-1], 16))
|
||
|
|
else:
|
||
|
|
data[i].add(int(v, 16))
|
||
|
|
@@ -131,10 +131,10 @@
|
||
|
|
def csv_to_xml(csv_file, xml_file, scripts, exclude_scripts):
|
||
|
|
cmapdata = cmap_data_from_csv_file(csv_file, scripts, exclude_scripts)
|
||
|
|
if xml_file:
|
||
|
|
- print >> sys.stderr, 'writing %s' % xml_file
|
||
|
|
+ sys.stderr.write('writing %s\n' % xml_file)
|
||
|
|
cmap_data.write_cmap_data_file(cmapdata, xml_file, pretty=True)
|
||
|
|
else:
|
||
|
|
- print cmap_data.write_cmap_data(cmapdata, pretty=True)
|
||
|
|
+ print(cmap_data.write_cmap_data(cmapdata, pretty=True))
|
||
|
|
|
||
|
|
|
||
|
|
def _script_to_name(script):
|
||
|
|
@@ -183,7 +183,7 @@
|
||
|
|
num_cells += num_cols # headers are not empty
|
||
|
|
all_cells = num_cols * max_lines
|
||
|
|
fmt = 'Columns: %d\nRows: %d\nNon-empty cells: %d\nCells: %d'
|
||
|
|
- print >> sys.stderr, fmt % (num_cols, max_lines, num_cells, all_cells)
|
||
|
|
+ sys.stderr.write(fmt % (num_cols, max_lines, num_cells, all_cells) + '\n')
|
||
|
|
cmap_lines = []
|
||
|
|
cmap_lines.append(','.join(col[0] for col in cols))
|
||
|
|
for i in range(1, max_lines):
|
||
|
|
@@ -198,7 +198,7 @@
|
||
|
|
with open(csv_file, 'w') as f:
|
||
|
|
f.write(csv_data)
|
||
|
|
else:
|
||
|
|
- print csv_data
|
||
|
|
+ print(csv_data)
|
||
|
|
|
||
|
|
|
||
|
|
def _check_scripts(scripts):
|
||
|
|
@@ -210,7 +210,7 @@
|
||
|
|
['CJK', 'EXCL', 'LGC', 'MONO', 'MUSIC', 'SYM2', 'Zsye'])
|
||
|
|
for s in scripts:
|
||
|
|
if s not in all_scripts:
|
||
|
|
- print >> sys.stderr, 'unknown script:', s
|
||
|
|
+ sys.stderr.write('unknown script:\n', s)
|
||
|
|
have_unknown = True
|
||
|
|
return not have_unknown
|
||
|
|
|
||
|
|
@@ -236,10 +236,10 @@
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
if not _check_scripts(args.scripts):
|
||
|
|
- print >> sys.stderr, 'some scripts failed'
|
||
|
|
+ sys.stderr.write('some scripts failed\n')
|
||
|
|
return
|
||
|
|
if not _check_scripts(args.exclude_scripts):
|
||
|
|
- print >> sys.stderr, 'some exclude scripts failed'
|
||
|
|
+ sys.stderr.write('some exclude scripts failed\n')
|
||
|
|
return
|
||
|
|
|
||
|
|
if args.outfile == '-default-':
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: mti_cmap_data.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/noto_cmap_reqs.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/noto_cmap_reqs.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/noto_cmap_reqs.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/noto_cmap_reqs.py 2019-07-09 15:35:37.193084156 +0200
|
||
|
|
@@ -107,14 +107,14 @@
|
||
|
|
|
||
|
|
def _report(self, text):
|
||
|
|
if self._log_events:
|
||
|
|
- print text
|
||
|
|
+ print(text)
|
||
|
|
|
||
|
|
def _finish_block(self):
|
||
|
|
if self._block and self._log_events and not self._log_details:
|
||
|
|
for text in sorted(self._block_count):
|
||
|
|
- print '%s: %s' % (
|
||
|
|
+ print('%s: %s' % (
|
||
|
|
text, tool_utils.write_int_ranges(
|
||
|
|
- self._block_count[text]))
|
||
|
|
+ self._block_count[text])))
|
||
|
|
|
||
|
|
def _report_cp(self, cp, text, script):
|
||
|
|
if not self._log_events:
|
||
|
|
@@ -123,18 +123,18 @@
|
||
|
|
if cp_block != self._block:
|
||
|
|
self._finish_block()
|
||
|
|
self._block = cp_block
|
||
|
|
- print '# block: ' + self._block
|
||
|
|
+ print('# block: ' + self._block)
|
||
|
|
self._block_count = collections.defaultdict(set)
|
||
|
|
if self._log_details:
|
||
|
|
if not (
|
||
|
|
self._block in self._suppressed_blocks or
|
||
|
|
script in self._suppressed_scripts):
|
||
|
|
- print self._cp_info(cp), text
|
||
|
|
+ print(self._cp_info(cp), text)
|
||
|
|
else:
|
||
|
|
self._block_count[text].add(cp)
|
||
|
|
|
||
|
|
def _error(self, text):
|
||
|
|
- print >> sys.stderr, text
|
||
|
|
+ sys.stderr.write(text + '\n')
|
||
|
|
raise ValueError('failed')
|
||
|
|
|
||
|
|
def _verify_script_exists(self, script):
|
||
|
|
@@ -332,15 +332,15 @@
|
||
|
|
block_info = '%s %s' % (block, ', '.join('%s/%d' % t for t in info))
|
||
|
|
if block in assigned_primaries:
|
||
|
|
max_script = assigned_primaries[block]
|
||
|
|
- # print 'assigning primary', block_info, '->', max_script
|
||
|
|
+ # print('assigning primary', block_info, '->', max_script)
|
||
|
|
else:
|
||
|
|
- print >> sys.stderr, 'ERROR: no primary', block, block_info
|
||
|
|
+ sys.stderr.write('ERROR: no primary\n', block, block_info)
|
||
|
|
max_script = None
|
||
|
|
elif max_script == 'Zinh':
|
||
|
|
if block in inherited_primaries:
|
||
|
|
max_script = inherited_primaries[block]
|
||
|
|
else:
|
||
|
|
- print >> sys.stderr, 'ERROR: no inherited primary', block, block_info
|
||
|
|
+ sys.stderr.write('ERROR: no inherited primary\n', block, block_info)
|
||
|
|
max_script = None
|
||
|
|
block_to_script[block] = max_script
|
||
|
|
return block_to_script
|
||
|
|
@@ -390,9 +390,9 @@
|
||
|
|
for cp in cmap_ops.script_chars('Zinh'):
|
||
|
|
primary_script = _primary_script_for_block(unicode_data.block(cp))
|
||
|
|
if not primary_script:
|
||
|
|
- print >> sys.stderr, 'Error: no primary script for %04X' % cp
|
||
|
|
+ sys.stderr.write('Error: no primary script for %04X\n' % cp)
|
||
|
|
elif primary_script == 'Zinh':
|
||
|
|
- print >> sys.stderr, 'Error: primary script for %04X is Zinh' % cp
|
||
|
|
+ sys.stderr.write('Error: primary script for %04X is Zinh\n' % cp)
|
||
|
|
else:
|
||
|
|
cmap_ops.ensure_script(primary_script)
|
||
|
|
cmap_ops.add(cp, primary_script)
|
||
|
|
@@ -518,7 +518,7 @@
|
||
|
|
if block != last_block:
|
||
|
|
last_block = block
|
||
|
|
if block not in block_assignments:
|
||
|
|
- print >> sys.stderr, 'ERROR: no assignment for block %s' % block
|
||
|
|
+ sys.stderr.write('ERROR: no assignment for block %s\n' % block)
|
||
|
|
new_script = None
|
||
|
|
else:
|
||
|
|
new_script = block_assignments[block]
|
||
|
|
@@ -528,21 +528,21 @@
|
||
|
|
cmap_ops.remove(cp, 'Zyyy')
|
||
|
|
cmap_ops.add(cp, new_script)
|
||
|
|
else:
|
||
|
|
- print >> sys.stderr, ' could not assign %04x %s' % (
|
||
|
|
- cp, unicode_data.name(cp))
|
||
|
|
+ sys.stderr.write(' could not assign %04x %s\n' % (
|
||
|
|
+ cp, unicode_data.name(cp)))
|
||
|
|
|
||
|
|
if len(used_assignments) != len(block_assignments):
|
||
|
|
- print >> sys.stderr, 'ERROR: some block assignments unused'
|
||
|
|
+ sys.stderr.write('ERROR: some block assignments unused\n')
|
||
|
|
unused = set([block for block in block_assignments
|
||
|
|
if block not in used_assignments])
|
||
|
|
for block in unicode_data.block_names():
|
||
|
|
if block in unused:
|
||
|
|
- print >> sys.stderr, ' %s' % block
|
||
|
|
+ sys.stderr.write(' %s\n' % block)
|
||
|
|
unused.remove(block)
|
||
|
|
if unused:
|
||
|
|
- print >> sys.stderr, 'ERROR: unknown block names'
|
||
|
|
+ sys.stderr.write('ERROR: unknown block names\n')
|
||
|
|
for block in sorted(unused):
|
||
|
|
- print >> sys.stderr, ' %s' % block
|
||
|
|
+ sys.stderr.write(' %s\n' % block)
|
||
|
|
|
||
|
|
cmap_ops.delete_script('Zyyy')
|
||
|
|
|
||
|
|
@@ -595,8 +595,8 @@
|
||
|
|
if not unicode_data.is_defined(cp):
|
||
|
|
continue
|
||
|
|
if cp not in char_to_scripts and to_script != 'EXCL':
|
||
|
|
- print >> sys.stderr, 'reassign missing %04X %s' % (
|
||
|
|
- cp, unicode_data.name(cp, '<unnamed>'))
|
||
|
|
+ sys.stderr.write('reassign missing %04X %s\n' % (
|
||
|
|
+ cp, unicode_data.name(cp, '<unnamed>')))
|
||
|
|
continue
|
||
|
|
if all_scripts:
|
||
|
|
from_list = char_to_scripts[cp]
|
||
|
|
@@ -917,15 +917,15 @@
|
||
|
|
name = unicode_data.name(cp, '<unnamed">')
|
||
|
|
if cp not in chars:
|
||
|
|
if block == None:
|
||
|
|
- print "'%s': tool_utils.parse_int_ranges(\"\"\"" % script
|
||
|
|
+ print("'%s': tool_utils.parse_int_ranges(\"\"\"" % script)
|
||
|
|
cp_block = unicode_data.block(cp)
|
||
|
|
if cp_block != block:
|
||
|
|
block = cp_block
|
||
|
|
- print ' # %s' % block
|
||
|
|
- print ' %04X # %s' % (cp, name)
|
||
|
|
+ print(' # %s' % block)
|
||
|
|
+ print(' %04X # %s' % (cp, name))
|
||
|
|
chars.add(cp)
|
||
|
|
if block != None:
|
||
|
|
- print ' """),'
|
||
|
|
+ print(' """),')
|
||
|
|
|
||
|
|
# maintained using 'regen_script_required' fn
|
||
|
|
_SCRIPT_REQUIRED = [
|
||
|
|
@@ -2642,9 +2642,9 @@
|
||
|
|
except KeyError:
|
||
|
|
pass
|
||
|
|
script_name = script_name.replace(unichr(0x2019), "'")
|
||
|
|
- print ' # %s - %s' % (script, script_name)
|
||
|
|
+ print(' # %s - %s' % (script, script_name))
|
||
|
|
if script in script_to_comment_and_data:
|
||
|
|
- print " ('%s'," % script
|
||
|
|
+ print(" ('%s'," % script)
|
||
|
|
lines = []
|
||
|
|
comment, data = script_to_comment_and_data[script]
|
||
|
|
lines.append(' # Comment')
|
||
|
|
@@ -2665,8 +2665,8 @@
|
||
|
|
cp_name = unicode_data.name(cp, '<unnamed>')
|
||
|
|
lines.append('%04X # %s' % (cp, cp_name))
|
||
|
|
lines.append('"""),')
|
||
|
|
- print '\n '.join(lines)
|
||
|
|
- print
|
||
|
|
+ print('\n '.join(lines))
|
||
|
|
+ print()
|
||
|
|
|
||
|
|
|
||
|
|
def _assign_script_required(cmap_ops):
|
||
|
|
@@ -2760,11 +2760,11 @@
|
||
|
|
# ignore plane 2 and above
|
||
|
|
not_in_legacy -= set(range(0x20000, 0x120000))
|
||
|
|
if not_in_legacy:
|
||
|
|
- print 'not in legacy (%d):' % len(not_in_legacy)
|
||
|
|
+ print('not in legacy (%d):' % len(not_in_legacy))
|
||
|
|
compare_cmap_data._print_detailed(not_in_legacy)
|
||
|
|
not_in_new = legacy_cjk_chars - cjk_chars
|
||
|
|
if not_in_new:
|
||
|
|
- print 'not in new (%d):' % len(not_in_new)
|
||
|
|
+ print('not in new (%d):' % len(not_in_new))
|
||
|
|
compare_cmap_data._print_detailed(not_in_new)
|
||
|
|
|
||
|
|
|
||
|
|
@@ -2997,13 +2997,13 @@
|
||
|
|
try:
|
||
|
|
cps = tool_utils.parse_int_ranges(ranges)
|
||
|
|
except Exception as err:
|
||
|
|
- print >> sys.stderr, err
|
||
|
|
- print >> sys.stderr, cols[2]
|
||
|
|
- print >> sys.stderr, 'problem on %d "%s"' % (lineix, line)
|
||
|
|
+ sys.stderr.write(err + '\n')
|
||
|
|
+ sys.stderr.write(cols[2] + '\n')
|
||
|
|
+ sys.stderr.write('problem on %d "%s"\n' % (lineix, line))
|
||
|
|
raise err
|
||
|
|
if len(cps) > 50:
|
||
|
|
- print >> sys.stderr, 'large range (%d) on %d "%s"' % (
|
||
|
|
- len(cps), lineix, line)
|
||
|
|
+ sys.stderr.write('large range (%d) on %d "%s"\n' % (
|
||
|
|
+ len(cps), lineix, line))
|
||
|
|
|
||
|
|
cmap_ops.log('group: %s (%d)' % (name, len(cps)))
|
||
|
|
if add:
|
||
|
|
@@ -3269,7 +3269,7 @@
|
||
|
|
else:
|
||
|
|
xcmap = None # not a tuple, so probably no fallback data
|
||
|
|
else:
|
||
|
|
- print >> sys.stderr, 'no script %s found in %s' % (script, srcfile)
|
||
|
|
+ sys.stderr.write('no script %s found in %s\n' % (script, srcfile))
|
||
|
|
merged_cmap[script] = (cmap, xcmap)
|
||
|
|
return merged_cmap
|
||
|
|
|
||
|
|
@@ -3285,10 +3285,10 @@
|
||
|
|
for block in unicode_data.block_names():
|
||
|
|
block_range = unicode_data.block_range(block)
|
||
|
|
primary_script = _primary_script_for_block(block)
|
||
|
|
- print '%13s %6s %s' % (
|
||
|
|
+ print('%13s %6s %s\n' % (
|
||
|
|
'%04X-%04X' % block_range,
|
||
|
|
'\'%s\'' % primary_script if primary_script else '------',
|
||
|
|
- block)
|
||
|
|
+ block))
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
@@ -3323,9 +3323,9 @@
|
||
|
|
cmapdata = _get_cmap_data(script_to_chars, metadata)
|
||
|
|
if args.outfile:
|
||
|
|
cmap_data.write_cmap_data_file(cmapdata, args.outfile, pretty=True)
|
||
|
|
- print 'wrote %s' % args.outfile
|
||
|
|
+ print('wrote %s' % args.outfile)
|
||
|
|
else:
|
||
|
|
- print cmap_data.write_cmap_data(cmapdata, pretty=True)
|
||
|
|
+ print(cmap_data.write_cmap_data(cmapdata, pretty=True))
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/noto_data.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/noto_data.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/noto_data.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/noto_data.py 2019-07-10 07:26:49.014607637 +0200
|
||
|
|
@@ -205,7 +205,7 @@
|
||
|
|
return _char_set('0041..005a,0061..007a')
|
||
|
|
|
||
|
|
def char_range(start, end):
|
||
|
|
- return range(start, end+1)
|
||
|
|
+ return list(range(start, end+1))
|
||
|
|
|
||
|
|
COPTIC_EPACT = char_range(0x102E0, 0x102FB)
|
||
|
|
ARABIC_MATH = char_range(0x1EE00, 0x1EEF1)
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: noto_data.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/noto_font_cmaps.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/noto_font_cmaps.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/noto_font_cmaps.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/noto_font_cmaps.py 2019-07-09 14:54:31.436400443 +0200
|
||
|
|
@@ -143,7 +143,7 @@
|
||
|
|
if args.outfile:
|
||
|
|
cmap_data.write_cmap_data_file(cmapdata, args.outfile, pretty=True)
|
||
|
|
else:
|
||
|
|
- print cmap_data.write_cmap_data(cmapdata, pretty=True)
|
||
|
|
+ print(cmap_data.write_cmap_data(cmapdata, pretty=True))
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/noto_font_coverage.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/noto_font_coverage.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/noto_font_coverage.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/noto_font_coverage.py 2019-07-09 15:25:48.281314544 +0200
|
||
|
|
@@ -25,7 +25,7 @@
|
||
|
|
"""Write the names of the families in sorted order."""
|
||
|
|
family_names = [family.name for family in families.itervalues()]
|
||
|
|
for name in sorted(family_names):
|
||
|
|
- print name
|
||
|
|
+ print(name)
|
||
|
|
|
||
|
|
|
||
|
|
def check_cp(families, cp):
|
||
|
|
@@ -87,17 +87,17 @@
|
||
|
|
out_family_str = '\n '.join(sorted(out_families))
|
||
|
|
else:
|
||
|
|
out_family_str = '<no coverage>'
|
||
|
|
- print '%s:\n %s' % (to_ranges_str(out_cps), out_family_str)
|
||
|
|
+ print('%s:\n %s' % (to_ranges_str(out_cps), out_family_str))
|
||
|
|
|
||
|
|
cps = codepoints(args.each)
|
||
|
|
- print 'families that contain any of %s, by cp' % to_ranges_str(cps)
|
||
|
|
+ print('families that contain any of %s, by cp' % to_ranges_str(cps))
|
||
|
|
for family in families.itervalues():
|
||
|
|
family_cps = family.charset & cps
|
||
|
|
for cp in family_cps:
|
||
|
|
cp_to_families[cp].add(family.name)
|
||
|
|
|
||
|
|
if not cp_to_families:
|
||
|
|
- print 'no family supports any codepoint'
|
||
|
|
+ print('no family supports any codepoint')
|
||
|
|
else:
|
||
|
|
cp_list = sorted(cps)
|
||
|
|
cp = cp_list[0]
|
||
|
|
@@ -117,7 +117,7 @@
|
||
|
|
missing = set()
|
||
|
|
result = {}
|
||
|
|
cps = sorted(codepoints(args.any))
|
||
|
|
- print 'families that contain any of %s' % to_ranges_str(cps)
|
||
|
|
+ print('families that contain any of %s' % to_ranges_str(cps))
|
||
|
|
for cp in cps:
|
||
|
|
family_names = check_cp(families, cp)
|
||
|
|
if family_names:
|
||
|
|
@@ -130,21 +130,21 @@
|
||
|
|
missing.add(cp)
|
||
|
|
if result:
|
||
|
|
for k, v in sorted(result.iteritems()):
|
||
|
|
- print ' %s: %s' % (k, to_ranges_str(v))
|
||
|
|
+ print(' %s: %s' % (k, to_ranges_str(v)))
|
||
|
|
if missing:
|
||
|
|
- print ' not supported: %s' % to_ranges_str(missing)
|
||
|
|
+ print(' not supported: %s' % to_ranges_str(missing))
|
||
|
|
|
||
|
|
if args.all:
|
||
|
|
cps = sorted(codepoints(args.all))
|
||
|
|
- print 'families that contain all of %s' % to_ranges_str(cps)
|
||
|
|
+ print('families that contain all of %s' % to_ranges_str(cps))
|
||
|
|
result = set([family.name for family in families.itervalues()])
|
||
|
|
for cp in cps:
|
||
|
|
family_names = check_cp(families, cp)
|
||
|
|
result &= family_names
|
||
|
|
if result:
|
||
|
|
- print '\n'.join([' %s' % name for name in sorted(result)])
|
||
|
|
+ print('\n'.join([' %s' % name for name in sorted(result)]))
|
||
|
|
else:
|
||
|
|
- print 'no family contains all the codepoints'
|
||
|
|
+ print('no family contains all the codepoints')
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/noto_fonts.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/noto_fonts.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/noto_fonts.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/noto_fonts.py 2019-07-09 15:24:04.415417171 +0200
|
||
|
|
@@ -449,7 +449,7 @@
|
||
|
|
of these. 'paths' defaults to the standard noto font paths, using notoconfig."""
|
||
|
|
|
||
|
|
font_dirs = filter(None, [tool_utils.resolve_path(p) for p in paths])
|
||
|
|
- print 'Getting fonts from: %s' % font_dirs
|
||
|
|
+ print('Getting fonts from: %s' % font_dirs)
|
||
|
|
|
||
|
|
all_fonts = []
|
||
|
|
for font_dir in font_dirs:
|
||
|
|
@@ -460,8 +460,8 @@
|
||
|
|
filepath = path.join(font_dir, filename)
|
||
|
|
font = get_noto_font(filepath)
|
||
|
|
if not font:
|
||
|
|
- print >> sys.stderr, 'bad font filename in %s: \'%s\'.' % (
|
||
|
|
- (font_dir, filename))
|
||
|
|
+ sys.stderr.write('bad font filename in %s: \'%s\'.\n' % (
|
||
|
|
+ (font_dir, filename)))
|
||
|
|
continue
|
||
|
|
|
||
|
|
all_fonts.append(font)
|
||
|
|
@@ -577,8 +577,8 @@
|
||
|
|
familyname = fontname if ix == -1 else fontname[:ix]
|
||
|
|
wws_key = noto_font_to_wws_family_id(font)
|
||
|
|
if wws_key_to_family_name.get(wws_key, familyname) != familyname:
|
||
|
|
- print '!!! mismatching font names for key %s: %s and %s' % (
|
||
|
|
- wws_key, wws_key_to_family_name[wws_key], familyname)
|
||
|
|
+ print('!!! mismatching font names for key %s: %s and %s' % (
|
||
|
|
+ wws_key, wws_key_to_family_name[wws_key], familyname))
|
||
|
|
else:
|
||
|
|
wws_key_to_family_name[wws_key] = familyname
|
||
|
|
return wws_key_to_family_name
|
||
|
|
@@ -588,7 +588,7 @@
|
||
|
|
"""test name generation to make sure we match the font name from the wws id"""
|
||
|
|
wws_key_to_family_name = _all_noto_font_key_to_names(paths)
|
||
|
|
for key, val in sorted(wws_key_to_family_name.items()):
|
||
|
|
- print key, val
|
||
|
|
+ print(key, val)
|
||
|
|
name = ''.join(wws_family_id_to_name_parts(key))
|
||
|
|
if name != val:
|
||
|
|
raise Exception('!!! generated name %s does not match' % name)
|
||
|
|
@@ -617,9 +617,9 @@
|
||
|
|
args.dirs = NOTO_FONT_PATHS
|
||
|
|
fonts = get_noto_fonts(paths=args.dirs)
|
||
|
|
for font in fonts:
|
||
|
|
- print font.filepath
|
||
|
|
+ print(font.filepath)
|
||
|
|
for attr in font._fields:
|
||
|
|
- print ' %15s: %s' % (attr, getattr(font, attr))
|
||
|
|
+ print(' %15s: %s' % (attr, getattr(font, attr)))
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/sample_with_font.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/sample_with_font.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/sample_with_font.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/sample_with_font.py 2019-07-09 15:23:00.221098659 +0200
|
||
|
|
@@ -42,7 +42,7 @@
|
||
|
|
|
||
|
|
def _build_text(name_map, initial_text=''):
|
||
|
|
text = initial_text
|
||
|
|
- print 'build text using map of length %d' % len(name_map)
|
||
|
|
+ print('build text using map of length %d' % len(name_map))
|
||
|
|
while True:
|
||
|
|
line = raw_input('> ')
|
||
|
|
if not line:
|
||
|
|
@@ -53,12 +53,12 @@
|
||
|
|
_help()
|
||
|
|
continue
|
||
|
|
if line == 'names':
|
||
|
|
- print 'names:\n ' + '\n '.join(sorted(name_map.keys()))
|
||
|
|
+ print('names:\n ' + '\n '.join(sorted(name_map.keys())))
|
||
|
|
continue
|
||
|
|
if line == 'dump':
|
||
|
|
- print 'dump: \'%s\'' % text
|
||
|
|
+ print('dump: \'%s\'' % text)
|
||
|
|
for cp in text:
|
||
|
|
- print '%06x %s' % (ord(cp), unicode_data.name(ord(cp)))
|
||
|
|
+ print('%06x %s' % (ord(cp), unicode_data.name(ord(cp))))
|
||
|
|
continue
|
||
|
|
if line == 'clear':
|
||
|
|
text = ''
|
||
|
|
@@ -74,17 +74,17 @@
|
||
|
|
if line in name:
|
||
|
|
matches.append(name)
|
||
|
|
if not matches:
|
||
|
|
- print 'no match for "%s"'% line
|
||
|
|
+ print('no match for "%s"'% line)
|
||
|
|
continue
|
||
|
|
|
||
|
|
if len(matches) == 1:
|
||
|
|
- print matches[0]
|
||
|
|
+ print(matches[0])
|
||
|
|
text += unichr(name_map[matches[0]])
|
||
|
|
continue
|
||
|
|
|
||
|
|
# if we match a full line, then use that
|
||
|
|
if line in matches:
|
||
|
|
- print line
|
||
|
|
+ print(line)
|
||
|
|
text += unichr(name_map[line])
|
||
|
|
continue
|
||
|
|
|
||
|
|
@@ -95,14 +95,14 @@
|
||
|
|
|
||
|
|
# if we match a full word, and only one line has this full word, use that
|
||
|
|
if len(new_matches) == 1:
|
||
|
|
- print new_matches[0]
|
||
|
|
+ print(new_matches[0])
|
||
|
|
text += unichr(name_map[new_matches[0]])
|
||
|
|
continue
|
||
|
|
|
||
|
|
select_multiple = True
|
||
|
|
while select_multiple:
|
||
|
|
- print 'multiple matches:\n ' + '\n '.join(
|
||
|
|
- '[%2d] %s' % (i, n) for i, n in enumerate(matches))
|
||
|
|
+ print('multiple matches:\n ' + '\n '.join(
|
||
|
|
+ '[%2d] %s' % (i, n) for i, n in enumerate(matches)))
|
||
|
|
while True:
|
||
|
|
line = raw_input('0-%d or q to skip> ' % (len(matches) - 1))
|
||
|
|
if line == 'q':
|
||
|
|
@@ -118,13 +118,13 @@
|
||
|
|
break
|
||
|
|
|
||
|
|
if n < 0 or n >= len(matches):
|
||
|
|
- print '%d out of range' % n
|
||
|
|
+ print('%d out of range' % n)
|
||
|
|
continue
|
||
|
|
|
||
|
|
text += unichr(name_map[matches[n]])
|
||
|
|
select_multiple = False
|
||
|
|
|
||
|
|
- print 'done.'
|
||
|
|
+ print('done.')
|
||
|
|
return text
|
||
|
|
|
||
|
|
|
||
|
|
@@ -148,7 +148,7 @@
|
||
|
|
def _write_text(filename, text):
|
||
|
|
with codecs.open(filename, 'w', 'utf-8') as f:
|
||
|
|
f.write(text)
|
||
|
|
- print 'wrote %s' % filename
|
||
|
|
+ print('wrote %s' % filename)
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
@@ -175,7 +175,7 @@
|
||
|
|
charset = coverage.character_set(args.font)
|
||
|
|
name_map = _get_char_names(charset)
|
||
|
|
text = _build_text(name_map, text)
|
||
|
|
- print 'text: ' + text
|
||
|
|
+ print('text: ' + text)
|
||
|
|
else:
|
||
|
|
charset = None
|
||
|
|
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/spreadsheet.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/spreadsheet.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/spreadsheet.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/spreadsheet.py 2019-07-09 15:21:57.239767278 +0200
|
||
|
|
@@ -54,7 +54,7 @@
|
||
|
|
if not m:
|
||
|
|
m = re.match(r'Noto (Sans) (Myanmar) (UI)(.*)', font)
|
||
|
|
if not m:
|
||
|
|
- print 'could not parse Myanmar exception: "%s"' % font
|
||
|
|
+ print('could not parse Myanmar exception: "%s"' % font)
|
||
|
|
continue
|
||
|
|
|
||
|
|
style, script, ui, weight = m.groups()
|
||
|
|
@@ -82,15 +82,15 @@
|
||
|
|
script = 'Cuneiform'
|
||
|
|
|
||
|
|
fontname = ''.join(['Noto', style, script, ui, '-', weight, '.', ext])
|
||
|
|
- # print '%s:\n--> %s\n--> %s' % (
|
||
|
|
- # font, str((style, script, ui, weight)), fontname)
|
||
|
|
+ # print('%s:\n--> %s\n--> %s' % (
|
||
|
|
+ # font, str((style, script, ui, weight)), fontname))
|
||
|
|
|
||
|
|
if not hinting in [
|
||
|
|
'hinted',
|
||
|
|
'hinted (CFF)',
|
||
|
|
'unhinted']:
|
||
|
|
- print 'unrecognized hinting value \'%s\' on line %d (%s)' % (
|
||
|
|
- hinting, index, fontname)
|
||
|
|
+ print('unrecognized hinting value \'%s\' on line %d (%s)' % (
|
||
|
|
+ hinting, index, fontname))
|
||
|
|
continue
|
||
|
|
hinted = 'hinted' if hinting in ['hinted', 'hinted (CFF)'] else 'unhinted'
|
||
|
|
|
||
|
|
@@ -103,8 +103,8 @@
|
||
|
|
'Design approved',
|
||
|
|
'Design re-approved',
|
||
|
|
'Released']:
|
||
|
|
- print 'unrecognized status value \'%s\' on line %d (%s)' % (
|
||
|
|
- status, index, fontname)
|
||
|
|
+ print('unrecognized status value \'%s\' on line %d (%s)' % (
|
||
|
|
+ status, index, fontname))
|
||
|
|
continue
|
||
|
|
|
||
|
|
expect_font = status in [
|
||
|
|
@@ -129,11 +129,11 @@
|
||
|
|
spreadsheet_extra = spreadsheet_filenames - noto_filenames
|
||
|
|
spreadsheet_missing = noto_filenames - spreadsheet_filenames
|
||
|
|
if spreadsheet_extra:
|
||
|
|
- print 'spreadsheet extra:\n ' + '\n '.join(
|
||
|
|
- sorted(spreadsheet_extra))
|
||
|
|
+ print('spreadsheet extra:\n ' + '\n '.join(
|
||
|
|
+ sorted(spreadsheet_extra)))
|
||
|
|
if spreadsheet_missing:
|
||
|
|
- print 'spreadsheet missing:\n ' + '\n '.join(
|
||
|
|
- sorted(spreadsheet_missing))
|
||
|
|
+ print('spreadsheet missing:\n ' + '\n '.join(
|
||
|
|
+ sorted(spreadsheet_missing)))
|
||
|
|
|
||
|
|
spreadsheet_match = spreadsheet_filenames & noto_filenames
|
||
|
|
for filename in sorted(spreadsheet_match):
|
||
|
|
@@ -144,10 +144,10 @@
|
||
|
|
approved_version = data[4]
|
||
|
|
if approved_version:
|
||
|
|
warn = '!!!' if approved_version != font_version else ''
|
||
|
|
- print '%s%s version: %s approved: %s' % (
|
||
|
|
- warn, filename, font_version, approved_version)
|
||
|
|
+ print('%s%s version: %s approved: %s' % (
|
||
|
|
+ warn, filename, font_version, approved_version))
|
||
|
|
else:
|
||
|
|
- print '%s version: %s' % (filename, font_version)
|
||
|
|
+ print('%s version: %s' % (filename, font_version))
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/summary.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/summary.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/summary.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/summary.py 2019-07-09 15:20:31.022682550 +0200
|
||
|
|
@@ -112,7 +112,7 @@
|
||
|
|
|
||
|
|
line = [to_str(idx, val) for idx, val in enumerate(tup)
|
||
|
|
if not (short and (idx == 3 or idx == 6 or idx == 7))]
|
||
|
|
- print '\t'.join(line)
|
||
|
|
+ print('\t'.join(line))
|
||
|
|
|
||
|
|
def print_summary(summary_list, short):
|
||
|
|
labels = ('path', 'version', 'name', 'size', 'num_glyphs', 'num_chars', 'cmap', 'table_info')
|
||
|
|
@@ -130,10 +130,10 @@
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
if not os.path.isdir(args.root):
|
||
|
|
- print '%s does not exist or is not a directory' % args.root
|
||
|
|
+ print('%s does not exist or is not a directory' % args.root)
|
||
|
|
else:
|
||
|
|
root = os.path.abspath(args.root)
|
||
|
|
- print "root: %s, name: %s" % (root, args.name if args.name else '[all]')
|
||
|
|
+ print("root: %s, name: %s" % (root, args.name if args.name else '[all]'))
|
||
|
|
print_summary(summarize(root, name=args.name), args.short)
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/swat_license.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/swat_license.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/swat_license.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/swat_license.py 2019-07-09 15:16:14.937401163 +0200
|
||
|
|
@@ -133,15 +133,15 @@
|
||
|
|
version = names[_VERSION_ID]
|
||
|
|
m = re.match(r'Version (\d{1,5})\.(\d{1,5})( uh)?(;.*)?', version)
|
||
|
|
if not m:
|
||
|
|
- print '! Could not match version string (%s)' % version
|
||
|
|
+ print('! Could not match version string (%s)' % version)
|
||
|
|
return None, None
|
||
|
|
|
||
|
|
major_version = m.group(1)
|
||
|
|
minor_version = m.group(2)
|
||
|
|
- print 'old version: "%s"' % version
|
||
|
|
+ print('old version: "%s"' % version)
|
||
|
|
if is_hinted == None:
|
||
|
|
is_hinted = not bool(m.group(3))
|
||
|
|
- print 'computed hinted = %s' % is_hinted
|
||
|
|
+ print('computed hinted = %s' % is_hinted)
|
||
|
|
|
||
|
|
version_remainder = m.group(4)
|
||
|
|
accuracy = len(minor_version)
|
||
|
|
@@ -155,8 +155,8 @@
|
||
|
|
# bump the minor version keeping significant digits:
|
||
|
|
new_minor_version = str(int(minor_version) + 1).zfill(accuracy)
|
||
|
|
new_revision = major_version + '.' + new_minor_version
|
||
|
|
- print 'Update revision from \'%s\' to \'%s\'' % (
|
||
|
|
- expected_revision, new_revision)
|
||
|
|
+ print('Update revision from \'%s\' to \'%s\'' % (
|
||
|
|
+ expected_revision, new_revision))
|
||
|
|
# double check we are going to properly round-trip this value
|
||
|
|
float_revision = float(new_revision)
|
||
|
|
fixed_revision = misc.fixedTools.floatToFixed(float_revision, 16)
|
||
|
|
@@ -184,10 +184,10 @@
|
||
|
|
filepath = noto_font.filepath
|
||
|
|
basename = path.basename(filepath)
|
||
|
|
if noto_font.is_cjk:
|
||
|
|
- print '# Skipping cjk font %s' % basename
|
||
|
|
+ print('# Skipping cjk font %s' % basename)
|
||
|
|
return
|
||
|
|
if noto_font.fmt == 'ttc':
|
||
|
|
- print '# Deferring ttc font %s' % basename
|
||
|
|
+ print('# Deferring ttc font %s' % basename)
|
||
|
|
_ttc_fonts[noto_font] = ttc_utils.ttcfile_filenames(filepath)
|
||
|
|
return
|
||
|
|
|
||
|
|
@@ -200,7 +200,7 @@
|
||
|
|
if not rel_filepath:
|
||
|
|
raise ValueError('Could not identify noto root of %s' % filepath)
|
||
|
|
|
||
|
|
- print '-----\nUpdating %s' % rel_filepath
|
||
|
|
+ print('-----\nUpdating %s' % rel_filepath)
|
||
|
|
|
||
|
|
dst_file = path.join(dst_root, rel_filepath)
|
||
|
|
|
||
|
|
@@ -208,10 +208,10 @@
|
||
|
|
new_revision, new_version_string = get_bumped_version(
|
||
|
|
ttfont, noto_font.is_hinted)
|
||
|
|
except ValueError as e:
|
||
|
|
- print e
|
||
|
|
+ print(e)
|
||
|
|
return
|
||
|
|
|
||
|
|
- print '%s: %s' % ('Would write' if dry_run else 'Writing', dst_file)
|
||
|
|
+ print('%s: %s' % ('Would write' if dry_run else 'Writing', dst_file))
|
||
|
|
|
||
|
|
new_trademark = "%s is a trademark of Google Inc." % noto_font.family
|
||
|
|
|
||
|
|
@@ -286,7 +286,7 @@
|
||
|
|
label = _NAME_ID_LABELS[name_id]
|
||
|
|
oldText = '\'%s\'' % old if old else 'None'
|
||
|
|
newText = newText or ('\'%s\'' % new)
|
||
|
|
- print '%s:\n old: %s\n new: %s' % (label, oldText, newText or new)
|
||
|
|
+ print('%s:\n old: %s\n new: %s' % (label, oldText, newText or new))
|
||
|
|
|
||
|
|
label_change = _changes.get(label)
|
||
|
|
if not label_change:
|
||
|
|
@@ -342,7 +342,7 @@
|
||
|
|
if not path.isdir(dst_dir):
|
||
|
|
os.makedirs(dst_dir)
|
||
|
|
ttfont.save(dst_file)
|
||
|
|
- print 'Wrote file.'
|
||
|
|
+ print('Wrote file.')
|
||
|
|
|
||
|
|
|
||
|
|
def _construct_ttc_fonts(fonts, dst_root, dry_run):
|
||
|
|
@@ -364,7 +364,7 @@
|
||
|
|
|
||
|
|
for ttcfont, components in sorted(_ttc_fonts.iteritems()):
|
||
|
|
rel_filepath = _noto_relative_path(ttcfont.filepath)
|
||
|
|
- print '-----\nBuilding %s' % rel_filepath
|
||
|
|
+ print('-----\nBuilding %s' % rel_filepath)
|
||
|
|
|
||
|
|
component_list = []
|
||
|
|
# note the component order must match the original ttc, so
|
||
|
|
@@ -372,8 +372,8 @@
|
||
|
|
for component in components:
|
||
|
|
possible_components = basename_to_fonts.get(component)
|
||
|
|
if not possible_components:
|
||
|
|
- print '! no match for component named %s in %s' % (
|
||
|
|
- component, rel_path)
|
||
|
|
+ print('! no match for component named %s in %s' % (
|
||
|
|
+ component, rel_path))
|
||
|
|
component_list = []
|
||
|
|
break
|
||
|
|
|
||
|
|
@@ -381,23 +381,23 @@
|
||
|
|
for possible_component in possible_components:
|
||
|
|
if possible_component.is_hinted == ttcfont.is_hinted:
|
||
|
|
if matched_possible_component:
|
||
|
|
- print '! already matched possible component %s for %s' % (
|
||
|
|
+ print('! already matched possible component %s for %s' % (
|
||
|
|
matched_possible_component.filename,
|
||
|
|
- possible_component_filename)
|
||
|
|
+ possible_component_filename))
|
||
|
|
matched_possible_component = None
|
||
|
|
break
|
||
|
|
matched_possible_component = possible_component
|
||
|
|
if not matched_possible_component:
|
||
|
|
- print 'no matched component named %s' % component
|
||
|
|
+ print('no matched component named %s' % component)
|
||
|
|
component_list = []
|
||
|
|
break
|
||
|
|
component_list.append(matched_possible_component)
|
||
|
|
if not component_list:
|
||
|
|
- print '! cannot generate ttc font %s' % rel_path
|
||
|
|
+ print('! cannot generate ttc font %s' % rel_path)
|
||
|
|
continue
|
||
|
|
|
||
|
|
- print 'components:\n ' + '\n '.join(
|
||
|
|
- _noto_relative_path(font.filepath) for font in component_list)
|
||
|
|
+ print('components:\n ' + '\n '.join(
|
||
|
|
+ _noto_relative_path(font.filepath) for font in component_list))
|
||
|
|
if dry_run:
|
||
|
|
continue
|
||
|
|
|
||
|
|
@@ -405,7 +405,7 @@
|
||
|
|
src_files = [path.join(dst_root, _noto_relative_path(font.filepath))
|
||
|
|
for font in component_list]
|
||
|
|
ttc_utils.build_ttc(dst_ttc, src_files)
|
||
|
|
- print 'Built %s' % dst_ttc
|
||
|
|
+ print('Built %s' % dst_ttc)
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
@@ -421,33 +421,33 @@
|
||
|
|
|
||
|
|
_swat_fonts(args.dst_root, args.dry_run)
|
||
|
|
|
||
|
|
- print '------\nchange summary\n'
|
||
|
|
+ print('------\nchange summary\n')
|
||
|
|
for name_key in sorted(_changes):
|
||
|
|
- print '%s:' % name_key
|
||
|
|
+ print('%s:' % name_key)
|
||
|
|
new_vals = _changes[name_key]
|
||
|
|
for new_val in sorted(new_vals):
|
||
|
|
- print ' change to \'%s\':' % new_val
|
||
|
|
+ print(' change to \'%s\':' % new_val)
|
||
|
|
old_vals = new_vals[new_val]
|
||
|
|
for old_val in sorted(old_vals):
|
||
|
|
- print ' from %s (%d files)%s' % (
|
||
|
|
+ print(' from %s (%d files)%s' % (
|
||
|
|
'\'%s\'' % old_val if old_val else 'None',
|
||
|
|
- len(old_vals[old_val]), ':' if args.details else '')
|
||
|
|
+ len(old_vals[old_val]), ':' if args.details else ''))
|
||
|
|
if args.details:
|
||
|
|
for file_name in sorted(old_vals[old_val]):
|
||
|
|
x = file_name.rfind('/')
|
||
|
|
if x > 0:
|
||
|
|
x = file_name.rfind('/', 0, x)
|
||
|
|
- print ' ' + file_name[x:]
|
||
|
|
+ print(' ' + file_name[x:])
|
||
|
|
|
||
|
|
- print '------\nautofix summary\n'
|
||
|
|
+ print('------\nautofix summary\n')
|
||
|
|
for fix_key in sorted(_autofix):
|
||
|
|
fixed_files = _autofix[fix_key]
|
||
|
|
- print '%s (%d):' % (fix_key, len(fixed_files))
|
||
|
|
+ print('%s (%d):' % (fix_key, len(fixed_files)))
|
||
|
|
for file_name in sorted(fixed_files):
|
||
|
|
x = file_name.rfind('/')
|
||
|
|
if x > 0:
|
||
|
|
x = file_name.rfind('/', 0, x)
|
||
|
|
- print ' ' + file_name[x:]
|
||
|
|
+ print(' ' + file_name[x:])
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/sync_repos.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/sync_repos.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/sync_repos.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/sync_repos.py 2019-07-09 15:13:08.125387956 +0200
|
||
|
|
@@ -37,8 +37,8 @@
|
||
|
|
errors.append(r)
|
||
|
|
|
||
|
|
if errors:
|
||
|
|
- print >> sys.stderr, '%s %s not clean' % (
|
||
|
|
- ' '.join(errors), 'is' if len(errors) == 1 else 'are')
|
||
|
|
+ sys.stderr.write('%s %s not clean\n' % (
|
||
|
|
+ ' '.join(errors), 'is' if len(errors) == 1 else 'are'))
|
||
|
|
return False
|
||
|
|
return True
|
||
|
|
|
||
|
|
@@ -54,7 +54,7 @@
|
||
|
|
for p in _REPO_PATHS:
|
||
|
|
tool_utils.git_checkout(p, 'master')
|
||
|
|
else:
|
||
|
|
- print 'would have checked out master in %s' % (', '.join(_REPOS))
|
||
|
|
+ print('would have checked out master in %s' % (', '.join(_REPOS)))
|
||
|
|
|
||
|
|
return True
|
||
|
|
|
||
|
|
@@ -84,7 +84,7 @@
|
||
|
|
failed_tags.append('%s: %s' % (r, t))
|
||
|
|
|
||
|
|
if failed_tags:
|
||
|
|
- print >> sys.stderr, 'failed to find:\n %s' % '\n '.join(failed_tags)
|
||
|
|
+ sys.stderr.write('failed to find:\n %s' % '\n \n'.join(failed_tags))
|
||
|
|
return False
|
||
|
|
|
||
|
|
if not dry_run:
|
||
|
|
@@ -92,9 +92,9 @@
|
||
|
|
tool_utils.git_checkout(p, t)
|
||
|
|
|
||
|
|
if verbose or dry_run:
|
||
|
|
- print '%schecked out:\n %s' % (
|
||
|
|
+ print('%schecked out:\n %s' % (
|
||
|
|
'would have ' if dry_run else '',
|
||
|
|
- '\n '.join('%s: %s' % (r, t) for r, t in zip(_REPOS, resolved_tags)))
|
||
|
|
+ '\n '.join('%s: %s' % (r, t) for r, t in zip(_REPOS, resolved_tags))))
|
||
|
|
|
||
|
|
return True
|
||
|
|
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/test_vertical_extents.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/test_vertical_extents.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/test_vertical_extents.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/test_vertical_extents.py 2019-07-09 14:52:32.871687740 +0200
|
||
|
|
@@ -159,7 +159,7 @@
|
||
|
|
sys.stdin, font_file_name, ymin, ymax, language)
|
||
|
|
|
||
|
|
for line_bounds, text_piece in exceeding_lines:
|
||
|
|
- print text_piece.encode('UTF-8'), line_bounds
|
||
|
|
+ print(text_piece.encode('UTF-8'), line_bounds)
|
||
|
|
|
||
|
|
# print test_all_combinations(3, font_file_name, ymin, ymax)
|
||
|
|
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/tool_utils.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/tool_utils.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/tool_utils.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/tool_utils.py 2019-07-09 15:10:57.975786710 +0200
|
||
|
|
@@ -127,7 +127,7 @@
|
||
|
|
if not os.path.isdir(path):
|
||
|
|
if os.path.exists(path):
|
||
|
|
raise ValueError('%s exists and is not a directory' % path)
|
||
|
|
- print "making '%s'" % path
|
||
|
|
+ print("making '%s'" % path)
|
||
|
|
os.makedirs(path)
|
||
|
|
elif clean:
|
||
|
|
shutil.rmtree(path)
|
||
|
|
@@ -195,7 +195,7 @@
|
||
|
|
result = subprocess.check_output(
|
||
|
|
['git', 'checkout', branch_or_tag], stderr=subprocess.STDOUT)
|
||
|
|
if verbose:
|
||
|
|
- print '%s:\n%s\n-----' % (repo, result)
|
||
|
|
+ print('%s:\n%s\n-----' % (repo, result))
|
||
|
|
|
||
|
|
|
||
|
|
def git_mv(repo, old, new):
|
||
|
|
@@ -270,13 +270,13 @@
|
||
|
|
protected_files.append(f)
|
||
|
|
|
||
|
|
if files_not_under_version_control:
|
||
|
|
- print >> sys.stderr, '%d files were not under version control:\n %s' % (
|
||
|
|
+ sys.stderr.write('%d files were not under version control:\n %s\n' % (
|
||
|
|
len(files_not_under_version_control),
|
||
|
|
- ', '.join(files_not_under_version_control))
|
||
|
|
+ ', '.join(files_not_under_version_control)))
|
||
|
|
|
||
|
|
if protected_files:
|
||
|
|
- print >> sys.stderr, '%d files protected:\n %s' % (
|
||
|
|
- len(protected_files), ', '.join(protected_files))
|
||
|
|
+ sys.stderr.write('%d files protected:\n %s\n' % (
|
||
|
|
+ len(protected_files), ', '.join(protected_files)))
|
||
|
|
|
||
|
|
return tool_generated_files
|
||
|
|
|
||
|
|
@@ -298,10 +298,10 @@
|
||
|
|
def dumplines(msg, text, limit):
|
||
|
|
if text:
|
||
|
|
lines = text.splitlines()
|
||
|
|
- print '%s (%d lines):\n %s' % (
|
||
|
|
- msg, len(lines), '\n '.join(lines[:limit]))
|
||
|
|
+ print('%s (%d lines):\n %s' % (
|
||
|
|
+ msg, len(lines), '\n '.join(lines[:limit])))
|
||
|
|
if len(lines) > limit:
|
||
|
|
- print ' ...'
|
||
|
|
+ print(' ...')
|
||
|
|
|
||
|
|
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||
|
|
out, err = p.communicate()
|
||
|
|
@@ -315,7 +315,7 @@
|
||
|
|
if subprocess.call(
|
||
|
|
['git', 'diff-files', '--quiet', '--ignore-submodules', '--']):
|
||
|
|
if (print_errors):
|
||
|
|
- print 'There are unstaged changes:'
|
||
|
|
+ print('There are unstaged changes:')
|
||
|
|
capture_and_show_errors(
|
||
|
|
['git', 'diff-files', '--name-status', '-r', '--ignore-submodules',
|
||
|
|
'--'])
|
||
|
|
@@ -324,7 +324,7 @@
|
||
|
|
['git', 'diff-index', '--cached', '--quiet', 'HEAD',
|
||
|
|
'--ignore-submodules', '--']):
|
||
|
|
if (print_errors):
|
||
|
|
- print 'There are uncommitted changes:'
|
||
|
|
+ print('There are uncommitted changes:')
|
||
|
|
capture_and_show_errors(
|
||
|
|
['git', 'diff-index', '--cached', '--name-status', '-r', 'HEAD',
|
||
|
|
'--ignore-submodules', '--'])
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/ttc_utils.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/ttc_utils.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/ttc_utils.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/ttc_utils.py 2019-07-09 15:08:27.247406673 +0200
|
||
|
|
@@ -125,17 +125,17 @@
|
||
|
|
|
||
|
|
table_map = {}
|
||
|
|
for font_index, font_entry in enumerate(ttc.fonts):
|
||
|
|
- print '[%2d] %s' % (font_index, names[font_index])
|
||
|
|
+ print('[%2d] %s' % (font_index, names[font_index]))
|
||
|
|
for table_index, table_entry in enumerate(font_entry.tables):
|
||
|
|
table = ttc.tables[table_entry]
|
||
|
|
if table_entry not in table_map:
|
||
|
|
table_map[table_entry] = (font_index, table_index)
|
||
|
|
- print ' [%2d] %s %8d %8d' % (
|
||
|
|
- table_index, table.tag, table.offset, table.length)
|
||
|
|
+ print(' [%2d] %s %8d %8d' % (
|
||
|
|
+ table_index, table.tag, table.offset, table.length))
|
||
|
|
else:
|
||
|
|
table_from = table_map[table_entry]
|
||
|
|
- print ' [%2d] %s @%d.%d' % (
|
||
|
|
- table_index, table.tag, table_from[0], table_from[1])
|
||
|
|
+ print(' [%2d] %s @%d.%d' % (
|
||
|
|
+ table_index, table.tag, table_from[0], table_from[1]))
|
||
|
|
|
||
|
|
|
||
|
|
def ttcfile_filenames(ttcfile):
|
||
|
|
@@ -289,7 +289,7 @@
|
||
|
|
if args.op == 'dump':
|
||
|
|
ttcfile_dump(args.ttcfile)
|
||
|
|
elif args.op == 'names':
|
||
|
|
- print '\n'.join(ttcfile_filenames(args.ttcfile))
|
||
|
|
+ print('\n'.join(ttcfile_filenames(args.ttcfile)))
|
||
|
|
elif args.op == 'extract':
|
||
|
|
ttcfile_extract_and_write_namesfile(args.ttcfile, args.filedir)
|
||
|
|
elif args.op=='build':
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/unicode_data.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/unicode_data.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/unicode_data.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/unicode_data.py 2019-07-09 17:58:19.876725080 +0200
|
||
|
|
@@ -148,7 +148,7 @@
|
||
|
|
|
||
|
|
def _char_to_int(char):
|
||
|
|
"""Converts a potential character to its scalar value."""
|
||
|
|
- if type(char) in [str, unicode]:
|
||
|
|
+ if type(char) in [str, type(u'')]:
|
||
|
|
return ord(char)
|
||
|
|
else:
|
||
|
|
return char
|
||
|
|
@@ -249,7 +249,7 @@
|
||
|
|
"""Returns a frozenset of the cps in the named block."""
|
||
|
|
load_data()
|
||
|
|
first, last = _block_range[block]
|
||
|
|
- return frozenset(xrange(first, last + 1))
|
||
|
|
+ return frozenset(range(first, last + 1))
|
||
|
|
|
||
|
|
|
||
|
|
def block_names():
|
||
|
|
@@ -417,7 +417,7 @@
|
||
|
|
|
||
|
|
_HARD_CODED_FOLDED_SCRIPT_NAME_TO_CODE = {
|
||
|
|
_folded_script_name(name): code for code, name in
|
||
|
|
- _HARD_CODED_HUMAN_READABLE_SCRIPT_NAMES.iteritems()
|
||
|
|
+ _HARD_CODED_HUMAN_READABLE_SCRIPT_NAMES.items()
|
||
|
|
}
|
||
|
|
|
||
|
|
def human_readable_script_name(code):
|
||
|
|
@@ -572,7 +572,7 @@
|
||
|
|
elif char_name.endswith("Last>"):
|
||
|
|
# Ignore surrogates
|
||
|
|
if "Surrogate" not in char_name:
|
||
|
|
- for char in xrange(last_range_opener, code+1):
|
||
|
|
+ for char in range(last_range_opener, code+1):
|
||
|
|
_general_category_data[char] = general_category
|
||
|
|
_combining_class_data[char] = combining_class
|
||
|
|
if bidi_mirroring:
|
||
|
|
@@ -599,7 +599,7 @@
|
||
|
|
for first, last, script_name in script_ranges:
|
||
|
|
folded_script_name = _folded_script_name(script_name)
|
||
|
|
script = _folded_script_name_to_code[folded_script_name]
|
||
|
|
- for char_code in xrange(first, last+1):
|
||
|
|
+ for char_code in range(first, last+1):
|
||
|
|
_script_data[char_code] = script
|
||
|
|
|
||
|
|
|
||
|
|
@@ -610,7 +610,7 @@
|
||
|
|
|
||
|
|
for first, last, script_names in script_extensions_ranges:
|
||
|
|
script_set = frozenset(script_names.split(' '))
|
||
|
|
- for character_code in xrange(first, last+1):
|
||
|
|
+ for character_code in range(first, last+1):
|
||
|
|
_script_extensions_data[character_code] = script_set
|
||
|
|
|
||
|
|
|
||
|
|
@@ -622,7 +622,7 @@
|
||
|
|
for first, last, block_name in block_ranges:
|
||
|
|
_block_names.append(block_name)
|
||
|
|
_block_range[block_name] = (first, last)
|
||
|
|
- for character_code in xrange(first, last + 1):
|
||
|
|
+ for character_code in range(first, last + 1):
|
||
|
|
_block_data[character_code] = block_name
|
||
|
|
|
||
|
|
|
||
|
|
@@ -632,7 +632,7 @@
|
||
|
|
age_ranges = _parse_code_ranges(derived_age_txt.read())
|
||
|
|
|
||
|
|
for first, last, char_age in age_ranges:
|
||
|
|
- for char_code in xrange(first, last+1):
|
||
|
|
+ for char_code in range(first, last+1):
|
||
|
|
_age_data[char_code] = char_age
|
||
|
|
|
||
|
|
|
||
|
|
@@ -642,7 +642,7 @@
|
||
|
|
dcp_ranges = _parse_code_ranges(dcp_txt.read())
|
||
|
|
|
||
|
|
for first, last, property_name in dcp_ranges:
|
||
|
|
- for character_code in xrange(first, last+1):
|
||
|
|
+ for character_code in range(first, last+1):
|
||
|
|
try:
|
||
|
|
_core_properties_data[property_name].add(character_code)
|
||
|
|
except KeyError:
|
||
|
|
@@ -680,13 +680,13 @@
|
||
|
|
with open_unicode_data_file("IndicPositionalCategory.txt") as inpc_txt:
|
||
|
|
positional_ranges = _parse_code_ranges(inpc_txt.read())
|
||
|
|
for first, last, char_position in positional_ranges:
|
||
|
|
- for char_code in xrange(first, last+1):
|
||
|
|
+ for char_code in range(first, last+1):
|
||
|
|
_indic_positional_data[char_code] = char_position
|
||
|
|
|
||
|
|
with open_unicode_data_file("IndicSyllabicCategory.txt") as insc_txt:
|
||
|
|
syllabic_ranges = _parse_code_ranges(insc_txt.read())
|
||
|
|
for first, last, char_syllabic_category in syllabic_ranges:
|
||
|
|
- for char_code in xrange(first, last+1):
|
||
|
|
+ for char_code in range(first, last+1):
|
||
|
|
_indic_syllabic_data[char_code] = char_syllabic_category
|
||
|
|
|
||
|
|
|
||
|
|
@@ -784,7 +784,7 @@
|
||
|
|
continue
|
||
|
|
|
||
|
|
# discourage lots of redundant copies of seq_type
|
||
|
|
- seq_type = intern(m.group(3).strip().encode('ascii'))
|
||
|
|
+ seq_type = m.group(3).strip().encode('ascii')
|
||
|
|
seq = tuple(int(s, 16) for s in m.group(1).split())
|
||
|
|
name = m.group(4).strip()
|
||
|
|
age = float(m.group(5))
|
||
|
|
@@ -1003,7 +1003,7 @@
|
||
|
|
|
||
|
|
# maps from sequence to (name, age, type), we only need the name
|
||
|
|
seq_data = _read_emoji_data(_LEGACY_ANDROID_SEQUENCES.splitlines())
|
||
|
|
- seq_to_name = {k: v[0] for k, v in seq_data.iteritems()}
|
||
|
|
+ seq_to_name = {k: v[0] for k, v in seq_data.items()}
|
||
|
|
return _get_order_patch(_LEGACY_ANDROID_ORDER, seq_to_name)
|
||
|
|
|
||
|
|
|
||
|
|
@@ -1052,8 +1052,8 @@
|
||
|
|
group_list.extend(_read_emoji_test_data(_SUPPLEMENTAL_EMOJI_GROUP_DATA))
|
||
|
|
for i, (seq, group, subgroup, name) in enumerate(group_list):
|
||
|
|
if seq in _emoji_group_data:
|
||
|
|
- print 'seq %s alredy in group data as %s' % (seq_to_string(seq), _emoji_group_data[seq])
|
||
|
|
- print ' new value would be %s' % str((i, group, subgroup, name))
|
||
|
|
+ print('seq %s alredy in group data as %s' % (seq_to_string(seq), _emoji_group_data[seq]))
|
||
|
|
+ print(' new value would be %s' % str((i, group, subgroup, name)))
|
||
|
|
_emoji_group_data[seq] = (i, group, subgroup, name)
|
||
|
|
|
||
|
|
assert len(group_list) == len(_emoji_group_data)
|
||
|
|
@@ -1100,7 +1100,7 @@
|
||
|
|
exist, and an empty list if subgroup does not exist in group."""
|
||
|
|
_load_emoji_group_data()
|
||
|
|
result = None
|
||
|
|
- for seq, (index, g, sg, _) in _emoji_group_data.iteritems():
|
||
|
|
+ for seq, (index, g, sg, _) in _emoji_group_data.items():
|
||
|
|
if g == group:
|
||
|
|
if result == None:
|
||
|
|
result = []
|
||
|
|
@@ -1131,9 +1131,9 @@
|
||
|
|
_emoji_non_vs_to_canonical = {}
|
||
|
|
|
||
|
|
def add_data(data):
|
||
|
|
- for k, t in data.iteritems():
|
||
|
|
+ for k, t in data.items():
|
||
|
|
if k in _emoji_sequence_data:
|
||
|
|
- print 'already have data for sequence:', seq_to_string(k), t
|
||
|
|
+ print('already have data for sequence:', seq_to_string(k), t)
|
||
|
|
_emoji_sequence_data[k] = t
|
||
|
|
if EMOJI_VS in k:
|
||
|
|
_emoji_non_vs_to_canonical[strip_emoji_vs(k)] = k
|
||
|
|
@@ -1149,7 +1149,7 @@
|
||
|
|
# Get names for single emoji from the test data. We will prefer these over
|
||
|
|
# those in UnicodeData (e.g. prefer "one o'clock" to "clock face one oclock"),
|
||
|
|
# and if they're not in UnicodeData these are proposed new emoji.
|
||
|
|
- for seq, (_, _, _, emoji_name) in _emoji_group_data.iteritems():
|
||
|
|
+ for seq, (_, _, _, emoji_name) in _emoji_group_data.items():
|
||
|
|
non_vs_seq = strip_emoji_vs(seq)
|
||
|
|
if len(non_vs_seq) > 1:
|
||
|
|
continue
|
||
|
|
@@ -1596,10 +1596,10 @@
|
||
|
|
text_p += 1
|
||
|
|
else:
|
||
|
|
presentation = '<error>'
|
||
|
|
- print '%s%04x %5s %s' % (
|
||
|
|
- ' ' if cp < 0x10000 else '', cp, presentation, cp_name)
|
||
|
|
- print '%d total emoji, %d text presentation, %d emoji presentation' % (
|
||
|
|
- len(get_emoji()), text_p, emoji_p)
|
||
|
|
+ print('%s%04x %5s %s' % (
|
||
|
|
+ ' ' if cp < 0x10000 else '', cp, presentation, cp_name))
|
||
|
|
+ print('%d total emoji, %d text presentation, %d emoji presentation' % (
|
||
|
|
+ len(get_emoji()), text_p, emoji_p))
|
||
|
|
|
||
|
|
|
||
|
|
def _load_nameslist_data():
|
||
|
|
@@ -1670,16 +1670,16 @@
|
||
|
|
all_sequences = sorted(get_emoji_sequences());
|
||
|
|
for k in all_sequences:
|
||
|
|
if not get_emoji_group_data(k):
|
||
|
|
- print 'no data:', seq_to_string(k)
|
||
|
|
+ print('no data:', seq_to_string(k))
|
||
|
|
|
||
|
|
for group in get_emoji_groups():
|
||
|
|
- print 'group:', group
|
||
|
|
+ print('group:', group)
|
||
|
|
for subgroup in get_emoji_subgroups(group):
|
||
|
|
- print ' subgroup:', subgroup
|
||
|
|
- print ' %d items' % len(get_emoji_in_group(group, subgroup))
|
||
|
|
+ print(' subgroup:', subgroup)
|
||
|
|
+ print(' %d items' % len(get_emoji_in_group(group, subgroup)))
|
||
|
|
|
||
|
|
# dump some information for annotations
|
||
|
|
for k in get_sorted_emoji_sequences(all_sequences):
|
||
|
|
age = get_emoji_sequence_age(k)
|
||
|
|
if age == 12:
|
||
|
|
- print seq_to_string(k).replace('_', ' '), '#', get_emoji_sequence_name(k)
|
||
|
|
+ print(seq_to_string(k).replace('_', ' '), '#', get_emoji_sequence_name(k))
|
||
|
|
nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools のみに存在: unicode_data.py.~1~
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/unittests/font_tests.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/unittests/font_tests.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/unittests/font_tests.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/unittests/font_tests.py 2019-07-09 15:05:30.075310802 +0200
|
||
|
|
@@ -715,7 +715,7 @@
|
||
|
|
def test_individual_spacing_marks(self):
|
||
|
|
"""Tests that spacing marks are spacing by themselves."""
|
||
|
|
for font in self.font_files:
|
||
|
|
- print 'Testing %s for stand-alone spacing marks...' % font
|
||
|
|
+ print('Testing %s for stand-alone spacing marks...' % font)
|
||
|
|
for mark in self.marks_to_test:
|
||
|
|
mark = unichr(mark)
|
||
|
|
advances = layout.get_advances(mark, font)
|
||
|
|
@@ -725,13 +725,13 @@
|
||
|
|
def test_spacing_marks_in_combination(self):
|
||
|
|
"""Tests that spacing marks do not combine with base letters."""
|
||
|
|
for font in self.font_files:
|
||
|
|
- print 'Testing %s for spacing marks in combination...' % font
|
||
|
|
+ print('Testing %s for spacing marks in combination...' % font)
|
||
|
|
for base_letter in (u'A\u00C6BCDEFGHIJKLMNO\u00D8\u01A0PRST'
|
||
|
|
u'U\u01AFVWXYZ'
|
||
|
|
u'a\u00E6bcdefghi\u0131j\u0237klmn'
|
||
|
|
u'o\u00F8\u01A1prs\u017Ftu\u01B0vwxyz'
|
||
|
|
u'\u03D2'):
|
||
|
|
- print 'Testing %s combinations' % base_letter
|
||
|
|
+ print('Testing %s combinations' % base_letter)
|
||
|
|
for mark in self.marks_to_test:
|
||
|
|
if mark == 0x02DE:
|
||
|
|
# Skip rhotic hook, as it's perhaps OK for it to form
|
||
|
|
@@ -758,14 +758,14 @@
|
||
|
|
"""Tests that soft-dotted characters lose their dots when combined."""
|
||
|
|
|
||
|
|
for font in self.font_files:
|
||
|
|
- print 'Testing %s for soft-dotted combinations...' % font
|
||
|
|
+ print('Testing %s for soft-dotted combinations...' % font)
|
||
|
|
|
||
|
|
# TODO: replace the following list with actual derivation based on
|
||
|
|
# Unicode's soft-dotted property
|
||
|
|
for base_letter in (u'ij\u012F\u0249\u0268\u029D\u02B2\u03F3\u0456'
|
||
|
|
u'\u0458\u1D62\u1D96\u1DA4\u1DA8\u1E2D\u1ECB'
|
||
|
|
u'\u2071\u2C7C'):
|
||
|
|
- print 'Testing %s combinations' % base_letter.encode('UTF-8')
|
||
|
|
+ print('Testing %s combinations' % base_letter.encode('UTF-8'))
|
||
|
|
for mark in self.marks_to_test:
|
||
|
|
mark = unichr(mark)
|
||
|
|
letter_only = layout.get_glyphs(base_letter, font)
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/update_alpha.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/update_alpha.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/update_alpha.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/update_alpha.py 2019-07-09 15:04:19.898065031 +0200
|
||
|
|
@@ -89,7 +89,7 @@
|
||
|
|
font_paths.append(src_path)
|
||
|
|
|
||
|
|
if not font_paths:
|
||
|
|
- print 'All .ttf files compare identical. Exiting.'
|
||
|
|
+ print('All .ttf files compare identical. Exiting.')
|
||
|
|
return
|
||
|
|
|
||
|
|
# summarize fonts in this commit
|
||
|
|
@@ -132,8 +132,8 @@
|
||
|
|
# generate compare file to use as checkin log
|
||
|
|
checkin_msg_file = '/tmp/svn_checkin.txt'
|
||
|
|
with RedirectStdout(checkin_msg_file):
|
||
|
|
- print one_line_msg
|
||
|
|
- print
|
||
|
|
+ print(one_line_msg)
|
||
|
|
+ print()
|
||
|
|
compare_summary.compare_summary(
|
||
|
|
alphadir, srcdir, None, compare_summary.tuple_compare, True, False, False, False)
|
||
|
|
|
||
|
|
@@ -157,9 +157,9 @@
|
||
|
|
with open(checkin_msg_file) as f:
|
||
|
|
checkin_msg = f.read().strip();
|
||
|
|
|
||
|
|
- print '%s\n-----\n%s\n-----' % ('dry run' if dry_run else 'summary', checkin_msg)
|
||
|
|
+ print('%s\n-----\n%s\n-----' % ('dry run' if dry_run else 'summary', checkin_msg))
|
||
|
|
if not dry_run:
|
||
|
|
- print 'command to update: svn commit -F \'%s\'' % checkin_msg_file
|
||
|
|
+ print('command to update: svn commit -F \'%s\'' % checkin_msg_file)
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
@@ -175,11 +175,11 @@
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
if not os.path.isdir(args.srcdir):
|
||
|
|
- print '%s does not exist or is not a directory' % args.srcdir
|
||
|
|
+ print('%s does not exist or is not a directory' % args.srcdir)
|
||
|
|
return
|
||
|
|
|
||
|
|
if not os.path.exists(args.alpha):
|
||
|
|
- print '%s does not exist or is not a directory' % args.alpha
|
||
|
|
+ print('%s does not exist or is not a directory' % args.alpha)
|
||
|
|
return
|
||
|
|
|
||
|
|
push_to_noto_alpha(args.alpha, args.srcdir, args.dry_run)
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/update_cldr.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/update_cldr.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/update_cldr.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/update_cldr.py 2019-07-09 15:02:17.092384887 +0200
|
||
|
|
@@ -1,5 +1,5 @@
|
||
|
|
#!/usr/bin/env python
|
||
|
|
-# -*- coding: UTF-8 -*-
|
||
|
|
+# -*- coding: utf-8 -*-
|
||
|
|
#
|
||
|
|
# Copyright 2015 Google Inc. All rights reserved.
|
||
|
|
#
|
||
|
|
@@ -60,7 +60,7 @@
|
||
|
|
tool_utils.check_dir_exists(cldr_repo)
|
||
|
|
|
||
|
|
if not tool_utils.git_is_clean(noto_repo):
|
||
|
|
- print 'Please fix'
|
||
|
|
+ print('Please fix')
|
||
|
|
return
|
||
|
|
|
||
|
|
if update:
|
||
|
|
@@ -79,13 +79,13 @@
|
||
|
|
for subdir in CLDR_SUBDIRS:
|
||
|
|
src = os.path.join(cldr_repo, subdir)
|
||
|
|
dst = os.path.join(noto_cldr, subdir)
|
||
|
|
- print 'replacing directory %s...' % subdir
|
||
|
|
+ print('replacing directory %s...' % subdir)
|
||
|
|
shutil.rmtree(dst)
|
||
|
|
shutil.copytree(src, dst)
|
||
|
|
|
||
|
|
# replace files
|
||
|
|
for f in CLDR_FILES:
|
||
|
|
- print 'replacing file %s...' % f
|
||
|
|
+ print('replacing file %s...' % f)
|
||
|
|
src = os.path.join(cldr_repo, f)
|
||
|
|
dst = os.path.join(noto_cldr, f)
|
||
|
|
shutil.copy(src, dst)
|
||
|
|
@@ -95,7 +95,7 @@
|
||
|
|
|
||
|
|
# print commit message
|
||
|
|
tag_string = (' tag %s' % cldr_tag) if cldr_tag else ''
|
||
|
|
- print 'Update CLDR data to SVN r%s%s.' % (cldr_version, tag_string)
|
||
|
|
+ print('Update CLDR data to SVN r%s%s.' % (cldr_version, tag_string))
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
@@ -113,13 +113,13 @@
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
if not args.cldr or not args.noto:
|
||
|
|
- print "Missing either or both of cldr and noto locations."
|
||
|
|
+ print("Missing either or both of cldr and noto locations.")
|
||
|
|
return
|
||
|
|
|
||
|
|
if args.branch:
|
||
|
|
cur_branch = tool_utils.git_get_branch(args.noto)
|
||
|
|
if cur_branch != args.branch:
|
||
|
|
- print "Expected branch '%s' but %s is in branch '%s'." % (args.branch, args.noto, cur_branch)
|
||
|
|
+ print("Expected branch '%s' but %s is in branch '%s'." % (args.branch, args.noto, cur_branch))
|
||
|
|
return
|
||
|
|
|
||
|
|
update_cldr(args.noto, args.cldr, args.update_cldr, args.cldr_tag)
|
||
|
|
diff -ru nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/update_udhr_samples.py nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/update_udhr_samples.py
|
||
|
|
--- nototools-9c4375f07c9adc00c700c5d252df6a25d7425870.orig/nototools/update_udhr_samples.py 2019-03-20 03:30:53.000000000 +0100
|
||
|
|
+++ nototools-9c4375f07c9adc00c700c5d252df6a25d7425870/nototools/update_udhr_samples.py 2019-07-09 15:00:55.284264110 +0200
|
||
|
|
@@ -45,7 +45,7 @@
|
||
|
|
fetch_dir = tool_utils.ensure_dir_exists(fetch_dir)
|
||
|
|
dstfile = os.path.join(fetch_dir, UDHR_XML_ZIP_NAME)
|
||
|
|
result = urllib.urlretrieve(UDHR_XML_ZIP_URL, dstfile)
|
||
|
|
- print 'Fetched: ' + result[0]
|
||
|
|
+ print('Fetched: ' + result[0])
|
||
|
|
|
||
|
|
|
||
|
|
def update_udhr(udhr_dir, fetch_dir, in_repo):
|
||
|
|
@@ -71,7 +71,7 @@
|
||
|
|
|
||
|
|
date = datetime.datetime.now().strftime('%Y-%m-%d')
|
||
|
|
dst = 'in %s ' % udhr_dir if not in_repo else ''
|
||
|
|
- print 'Update UDHR files %sfrom %s as of %s.' % (dst, fetch_dir, date)
|
||
|
|
+ print('Update UDHR files %sfrom %s as of %s.' % (dst, fetch_dir, date))
|
||
|
|
|
||
|
|
|
||
|
|
def parse_index(src_dir):
|
||
|
|
@@ -99,7 +99,7 @@
|
||
|
|
bcp = e.attrib.get('bcp47')
|
||
|
|
if not bcp:
|
||
|
|
# don't know what to do with this, maybe we could supply a mapping.
|
||
|
|
- print 'no bcp for %s' % code
|
||
|
|
+ print('no bcp for %s' % code)
|
||
|
|
continue
|
||
|
|
|
||
|
|
script = e.attrib.get('iso15924')
|
||
|
|
@@ -304,9 +304,9 @@
|
||
|
|
result[new_bcp] = code
|
||
|
|
|
||
|
|
if errors:
|
||
|
|
- print 'fix_index had %d errors:' % len(errors)
|
||
|
|
+ print('fix_index had %d errors:' % len(errors))
|
||
|
|
for e in errors:
|
||
|
|
- print ' ', e
|
||
|
|
+ print(' ', e)
|
||
|
|
raise Exception('correct the fixes whitelist')
|
||
|
|
|
||
|
|
return result
|
||
|
|
@@ -340,7 +340,7 @@
|
||
|
|
# otherwise, we assume the 4-char value is a script, and leave it alone.
|
||
|
|
except KeyError:
|
||
|
|
# if we can't provide a script, it's no use for a script sample, so exclude it
|
||
|
|
- print 'no likely subtag (script) data for %s, excluding' % parts[0]
|
||
|
|
+ print('no likely subtag (script) data for %s, excluding' % parts[0])
|
||
|
|
continue
|
||
|
|
result[new_bcp] = code
|
||
|
|
return result
|
||
|
|
@@ -400,12 +400,12 @@
|
||
|
|
|
||
|
|
for lang_scr in sorted(options):
|
||
|
|
if lang_scr in bcp_to_code_attrib_sample:
|
||
|
|
- print '%s exists with variants %s' % (
|
||
|
|
- lang_scr, ', '.join(sorted(options[lang_scr])))
|
||
|
|
+ print('%s exists with variants %s' % (
|
||
|
|
+ lang_scr, ', '.join(sorted(options[lang_scr]))))
|
||
|
|
del options[lang_scr]
|
||
|
|
|
||
|
|
for lang_scr in sorted(options):
|
||
|
|
- print '%s options: %s' % (lang_scr, options[lang_scr])
|
||
|
|
+ print('%s options: %s' % (lang_scr, options[lang_scr]))
|
||
|
|
if not lang_scr in OPTION_MAP:
|
||
|
|
errors.append('%s missing from option map' % lang_scr)
|
||
|
|
elif not OPTION_MAP[lang_scr] in options[lang_scr]:
|
||
|
|
@@ -413,13 +413,13 @@
|
||
|
|
lang_scr, OPTION_MAP[lang_scr]))
|
||
|
|
else:
|
||
|
|
alias = OPTION_MAP[lang_scr]
|
||
|
|
- print 'adding %s (from %s)' % (lang_scr, alias)
|
||
|
|
+ print('adding %s (from %s)' % (lang_scr, alias))
|
||
|
|
bcp_to_code_attrib_sample[lang_scr] = bcp_to_code_attrib_sample[alias]
|
||
|
|
|
||
|
|
if errors:
|
||
|
|
- print 'add_default_lang_script encountered %d errors:' % len(errors)
|
||
|
|
+ print('add_default_lang_script encountered %d errors:' % len(errors))
|
||
|
|
for e in errors:
|
||
|
|
- print ' ', e
|
||
|
|
+ print(' ', e)
|
||
|
|
raise Exception('oops')
|
||
|
|
|
||
|
|
|
||
|
|
@@ -469,7 +469,7 @@
|
||
|
|
attr = code_to_attrib.get(ohchr)
|
||
|
|
if not attr:
|
||
|
|
attr = 'none'
|
||
|
|
- print '%s (%s) not in ohchr attribution data' % (code, ohchr)
|
||
|
|
+ print('%s (%s) not in ohchr attribution data' % (code, ohchr))
|
||
|
|
sample = bcp_to_sample[bcp]
|
||
|
|
bcp_to_code_attrib_sample[bcp] = (code, attr, sample)
|
||
|
|
|
||
|
|
@@ -479,10 +479,10 @@
|
||
|
|
|
||
|
|
|
||
|
|
def print_bcp_to_code_attrib_sample(bcp_to_code_attrib_sample):
|
||
|
|
- print 'index size: %s' % len(bcp_to_code_attrib_sample)
|
||
|
|
+ print('index size: %s' % len(bcp_to_code_attrib_sample))
|
||
|
|
for bcp, (code, attrib, sample) in sorted(
|
||
|
|
bcp_to_code_attrib_sample.iteritems()):
|
||
|
|
- print '%s: %s, %s\n "%s"' % (bcp, code, attrib, sample)
|
||
|
|
+ print('%s: %s, %s\n "%s"' % (bcp, code, attrib, sample))
|
||
|
|
|
||
|
|
|
||
|
|
def extract_para(src_path):
|
||
|
|
@@ -514,9 +514,9 @@
|
||
|
|
return sample
|
||
|
|
|
||
|
|
if new_sample == sample:
|
||
|
|
- print 'sample for %s was not changed by fix' % bcp
|
||
|
|
+ print('sample for %s was not changed by fix' % bcp)
|
||
|
|
else:
|
||
|
|
- print 'fixed sample for %s' % bcp
|
||
|
|
+ print('fixed sample for %s' % bcp)
|
||
|
|
return new_sample
|
||
|
|
|
||
|
|
|
||
|
|
@@ -526,7 +526,7 @@
|
||
|
|
src_path = os.path.join(udhr_dir, src_file)
|
||
|
|
sample = extract_para(src_path)
|
||
|
|
if not sample:
|
||
|
|
- print 'unable to get sample from %s' % src_file
|
||
|
|
+ print('unable to get sample from %s' % src_file)
|
||
|
|
return None
|
||
|
|
return sample
|
||
|
|
|
||
|
|
@@ -538,7 +538,7 @@
|
||
|
|
code = bcp_to_code[bcp]
|
||
|
|
sample = get_sample_for_code(src_dir, code)
|
||
|
|
if not sample:
|
||
|
|
- print 'bcp %s: no sample found (code %s)' % (bcp, code)
|
||
|
|
+ print('bcp %s: no sample found (code %s)' % (bcp, code))
|
||
|
|
else:
|
||
|
|
bcp_to_sample[bcp] = sample
|
||
|
|
return bcp_to_sample
|
||
|
|
@@ -622,9 +622,9 @@
|
||
|
|
del bcp_to_sample[bcp]
|
||
|
|
|
||
|
|
if errors:
|
||
|
|
- print 'found %d errors in samples' % len(errors)
|
||
|
|
+ print('found %d errors in samples' % len(errors))
|
||
|
|
for e in errors:
|
||
|
|
- print ' ', e
|
||
|
|
+ print(' ', e)
|
||
|
|
|
||
|
|
|
||
|
|
def update_samples(
|
||
|
|
@@ -643,8 +643,8 @@
|
||
|
|
if in_repo:
|
||
|
|
repo, subdir = os.path.split(sample_dir)
|
||
|
|
tool_samples = frozenset(tool_utils.get_tool_generated(repo, subdir))
|
||
|
|
- print 'allowing overwrite of %d files:\n %s' % (
|
||
|
|
- len(tool_samples), ', '.join(sorted(tool_samples)))
|
||
|
|
+ print('allowing overwrite of %d files:\n %s' % (
|
||
|
|
+ len(tool_samples), ', '.join(sorted(tool_samples))))
|
||
|
|
|
||
|
|
comments = [
|
||
|
|
'# Attributions for sample excerpts:',
|
||
|
|
@@ -660,13 +660,13 @@
|
||
|
|
dst_file = '%s_udhr.txt' % bcp
|
||
|
|
dst_path = os.path.join(sample_dir, dst_file)
|
||
|
|
if in_repo and os.path.isfile(dst_path) and dst_file not in tool_samples:
|
||
|
|
- print 'Not overwriting modified file %s' % dst_file
|
||
|
|
+ print('Not overwriting modified file %s' % dst_file)
|
||
|
|
else:
|
||
|
|
with codecs.open(dst_path, 'w', 'utf8') as f:
|
||
|
|
f.write(sample)
|
||
|
|
count += 1
|
||
|
|
sample_attrib_list.append('%s: %s' % (dst_file, attrib))
|
||
|
|
- print 'Created %d samples' % count
|
||
|
|
+ print('Created %d samples' % count)
|
||
|
|
|
||
|
|
# Some existing samples that we don't overwrite are not in
|
||
|
|
# bcp_to_code_attrib_sample, so they're not listed. Readers of the
|
||
|
|
@@ -685,7 +685,7 @@
|
||
|
|
|
||
|
|
# prefix of this sample commit message indicates that these were
|
||
|
|
# tool-generated
|
||
|
|
- print 'Updated by tool - sample files %sfrom %s as of %s.' % (dst, src, date)
|
||
|
|
+ print('Updated by tool - sample files %sfrom %s as of %s.' % (dst, src, date))
|
||
|
|
|
||
|
|
|
||
|
|
def get_scripts(text):
|
||
|
|
@@ -759,7 +759,7 @@
|
||
|
|
if required and required - scripts:
|
||
|
|
required_name = ', '.join(sorted([s for s in required]))
|
||
|
|
scripts_name = ', '.join(sorted([s for s in scripts]))
|
||
|
|
- print '%s requires %s but contains only %s' % (filename, required_name, scripts_name)
|
||
|
|
+ print('%s requires %s but contains only %s' % (filename, required_name, scripts_name))
|
||
|
|
errors += 1
|
||
|
|
else:
|
||
|
|
remainder = scripts
|
||
|
|
@@ -771,9 +771,9 @@
|
||
|
|
allowed_name = '<none>' if not allowed else ', '.join(
|
||
|
|
sorted([s for s in allowed]))
|
||
|
|
scripts_name = ', '.join(sorted([s for s in scripts]))
|
||
|
|
- print '%s allows %s but contains %s' % (filename, allowed_name, scripts_name)
|
||
|
|
+ print('%s allows %s but contains %s' % (filename, allowed_name, scripts_name))
|
||
|
|
errors += 1
|
||
|
|
- print 'Found %d errors in %d files tested.' % (errors, tested)
|
||
|
|
+ print('Found %d errors in %d files tested.' % (errors, tested))
|
||
|
|
|
||
|
|
|
||
|
|
def compare_samples(base_dir, trg_dir, trg_to_base_name=lambda x: x, opts=None):
|
||
|
|
@@ -782,15 +782,15 @@
|
||
|
|
file name to use in the comparisons."""
|
||
|
|
|
||
|
|
if not os.path.isdir(base_dir):
|
||
|
|
- print 'Original sample dir \'%s\' does not exist' % base_dir
|
||
|
|
+ print('Original sample dir \'%s\' does not exist' % base_dir)
|
||
|
|
return
|
||
|
|
if not os.path.isdir(trg_dir):
|
||
|
|
- print 'New sample dir \'%s\' does not exist' % trg_dir
|
||
|
|
+ print('New sample dir \'%s\' does not exist' % trg_dir)
|
||
|
|
return
|
||
|
|
|
||
|
|
- print 'Base (current) dir: %s' % base_dir
|
||
|
|
- print 'Target (new) dir: %s' % trg_dir
|
||
|
|
- print '[a/b] means "a" in base is replaced with "b" in target'
|
||
|
|
+ print('Base (current) dir: %s' % base_dir)
|
||
|
|
+ print('Target (new) dir: %s' % trg_dir)
|
||
|
|
+ print('[a/b] means "a" in base is replaced with "b" in target')
|
||
|
|
|
||
|
|
show_missing = opts and 'missing' in opts
|
||
|
|
show_diffs = opts and 'diffs' in opts
|
||
|
|
@@ -807,7 +807,7 @@
|
||
|
|
base_path = os.path.join(base_dir, base_name)
|
||
|
|
if not os.path.exists(base_path):
|
||
|
|
if show_missing:
|
||
|
|
- print 'base does not exist: %s' % base_name
|
||
|
|
+ print('base does not exist: %s' % base_name)
|
||
|
|
continue
|
||
|
|
|
||
|
|
base_text = None
|
||
|
|
@@ -817,13 +817,13 @@
|
||
|
|
with codecs.open(trg_path, 'r', 'utf8') as f:
|
||
|
|
trg_text = f.read()
|
||
|
|
if not base_text:
|
||
|
|
- print 'base text (%s) is empty' % k
|
||
|
|
+ print('base text (%s) is empty' % k)
|
||
|
|
continue
|
||
|
|
if not trg_text:
|
||
|
|
- print 'target text is empty: %s' % trg_path
|
||
|
|
+ print('target text is empty: %s' % trg_path)
|
||
|
|
continue
|
||
|
|
if base_text.find(trg_text) == -1:
|
||
|
|
- print 'target (%s) text not in base (%s)' % (base_name, trg_name)
|
||
|
|
+ print('target (%s) text not in base (%s)' % (base_name, trg_name))
|
||
|
|
if show_diffs:
|
||
|
|
# In scripts that use space for word break it might be better to compare
|
||
|
|
# word by word, but this suffices.
|
||
|
|
@@ -838,13 +838,13 @@
|
||
|
|
lines.append('[/%s]' % trg_text[j1:j2])
|
||
|
|
else:
|
||
|
|
lines.append('[%s/%s]' % (base_text[i1:i2], trg_text[j1:j2]))
|
||
|
|
- print ''.join(lines)
|
||
|
|
+ print(''.join(lines))
|
||
|
|
|
||
|
|
|
||
|
|
def update_repo(repo_samples, new_samples):
|
||
|
|
# Verify directory is clean.
|
||
|
|
if not tool_utils.git_is_clean(new_samples):
|
||
|
|
- print 'Please fix.'
|
||
|
|
+ print('Please fix.')
|
||
|
|
return
|
||
|
|
|
||
|
|
# Copy samples into git repo
|
||
|
|
@@ -858,7 +858,7 @@
|
||
|
|
tool_utils.git_add_all(new_samples)
|
||
|
|
|
||
|
|
# Sample commit message.
|
||
|
|
- print 'Update UDHR sample data.'
|
||
|
|
+ print('Update UDHR sample data.')
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
@@ -914,7 +914,7 @@
|
||
|
|
|
||
|
|
if not (args.fetch or args.update_udhr or args.update_sample or args.mapping
|
||
|
|
or args.base_sample_dir or args.test_script):
|
||
|
|
- print 'nothing to do.'
|
||
|
|
+ print('nothing to do.')
|
||
|
|
return
|
||
|
|
|
||
|
|
def fix_noto_prefix(argname):
|
||
|
|
@@ -963,7 +963,7 @@
|
||
|
|
if args.test_script:
|
||
|
|
test_sample_scripts(args.sample_dir)
|
||
|
|
except ValueError as e:
|
||
|
|
- print 'Error:', e
|
||
|
|
+ print('Error:', e)
|
||
|
|
|
||
|
|
if __name__ == '__main__':
|
||
|
|
main()
|