-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[why] The octicons got a lot updates. But they do not have a font anymore. [how] Keep our old codepoints constant, but add the new icons thereafter. Fixes: #490 Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
- Loading branch information
Showing
4 changed files
with
274 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
#!/usr/bin/env python3 | ||
# coding=utf8 | ||
|
||
# This extracts the names and source and destination codepoints | ||
# of the old octicons font file to keep their codepoints stable | ||
# | ||
# You do not need to redo it, the result is in the repo | ||
# | ||
# Usage: | ||
# fontforge analyze_octicons > mapping | ||
|
||
import fontforge | ||
|
||
octi_orig = "octicons_old.ttf" | ||
current_cp = 0xF400 | ||
|
||
print('# Examining {}'.format(octi_orig)) | ||
|
||
font = fontforge.open(octi_orig) | ||
for glyph in font.glyphs('encoding'): | ||
point = glyph.unicode | ||
if point < 0: | ||
continue | ||
desti = glyph.unicode | ||
if point < 0xF000: | ||
desti = point | ||
else: | ||
desti = current_cp | ||
current_cp += 1 | ||
print("{:X} {:X} {}".format(point, desti, glyph.glyphname)) | ||
|
||
font.close() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
#!/usr/bin/env python3 | ||
# coding=utf8 | ||
|
||
import sys | ||
import os | ||
import re | ||
import subprocess | ||
import fontforge | ||
|
||
archive = 'v18.2.0.tar.gz' | ||
subset = '-24' # use 24 px subset if possible | ||
|
||
def renamer(old_name): | ||
""" Return new equivalent icon name """ | ||
return { | ||
'trashcan' : 'trash', | ||
'cloud-download' : 'download', | ||
'cloud-upload' : 'upload', | ||
'clippy' : 'paste', | ||
'mail-read' : 'read', | ||
'primitive-dot' : 'dot-fill', | ||
'primitive-square' : 'square-fill', | ||
'settings' : 'sliders', | ||
'dashboard' : 'meter', | ||
'paintcan' : 'paintbrush', | ||
'ellipses' : 'ellipsis', | ||
}.get(old_name, old_name) | ||
|
||
print('\nReading mapping file') | ||
old_mapping = [] | ||
with open('mapping', 'r') as f: | ||
for line in f.readlines(): | ||
if line.startswith('#'): | ||
continue | ||
old_mapping.append(tuple(re.split(' +', line.strip()))) | ||
print('Found {} entries'.format(len(old_mapping))) | ||
|
||
print('Fetching octicons archive "{}"\n'.format(archive)) | ||
# if subprocess.call('curl -OL https://github.com/primer/octicons/archive/' + archive, shell=True): | ||
# sys.exit('Error fetching octicons archive') | ||
print('\nUnpacking octicons archive') | ||
if subprocess.call('rm -rf icons octicons-* && tar zxf *.gz && mv octicons-*/icons . && rm -rf octicons-*', shell=True): | ||
sys.exit('Error unpacking archive') | ||
|
||
svgs = os.listdir('icons') # icons is the subdir we got from the archive | ||
print('Found {} svgs'.format(len(svgs))) | ||
names = { s[0:-len('-xx.svg')] for s in svgs if s.endswith('-16.svg') or s.endswith('-24.svg') } | ||
print('Found {} icons after de-duplicating\n'.format(len(names))) | ||
|
||
num_found = 0 | ||
num_missing = 0 | ||
misslist = '' | ||
renamelist = '' | ||
|
||
for [i, j, old_n] in old_mapping: | ||
if old_n not in names: | ||
new_n = renamer(old_n) | ||
if new_n not in names: | ||
misslist += 'Missing {}\n'.format(old_n) | ||
num_missing += 1 | ||
continue | ||
renamelist += 'Renamed {} -> {}\n'.format(old_n, new_n) | ||
old_n = new_n | ||
names.remove(old_n) | ||
num_found += 1 | ||
|
||
print(renamelist) | ||
print(misslist) | ||
print("Found {} (of {}, missing {}) and new {}".format(num_found, len(old_mapping), num_missing, len(names))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,173 @@ | ||
# Examining octicons_old.ttf | ||
2665 2665 heart | ||
26A1 26A1 zap | ||
F000 F400 light-bulb | ||
F001 F401 repo | ||
F002 F402 repo-forked | ||
F005 F403 repo-push | ||
F006 F404 repo-pull | ||
F007 F405 book | ||
F008 F406 octoface | ||
F009 F407 git-pull-request | ||
F00A F408 mark-github | ||
F00B F409 cloud-download | ||
F00C F40A cloud-upload | ||
F00D F40B keyboard | ||
F00E F40C gist | ||
F010 F40D file-code | ||
F011 F40E file-text | ||
F012 F40F file-media | ||
F013 F410 file-zip | ||
F014 F411 file-pdf | ||
F015 F412 tag | ||
F016 F413 file-directory | ||
F017 F414 file-submodule | ||
F018 F415 person | ||
F019 F416 jersey | ||
F01F F417 git-commit | ||
F020 F418 git-branch | ||
F023 F419 git-merge | ||
F024 F41A mirror | ||
F026 F41B issue-opened | ||
F027 F41C issue-reopened | ||
F028 F41D issue-closed | ||
F02A F41E star | ||
F02B F41F comment | ||
F02C F420 question | ||
F02D F421 alert | ||
F02E F422 search | ||
F02F F423 gear | ||
F030 F424 radio-tower | ||
F031 F425 tools | ||
F032 F426 sign-out | ||
F033 F427 rocket | ||
F034 F428 rss | ||
F035 F429 clippy | ||
F036 F42A sign-in | ||
F037 F42B organization | ||
F038 F42C device-mobile | ||
F039 F42D unfold | ||
F03A F42E check | ||
F03B F42F mail | ||
F03C F430 mail-read | ||
F03D F431 arrow-up | ||
F03E F432 arrow-right | ||
F03F F433 arrow-down | ||
F040 F434 arrow-left | ||
F041 F435 pin | ||
F042 F436 gift | ||
F043 F437 graph | ||
F044 F438 triangle-left | ||
F045 F439 credit-card | ||
F046 F43A clock | ||
F047 F43B ruby | ||
F048 F43C broadcast | ||
F049 F43D key | ||
F04A F43E repo-force-push | ||
F04C F43F repo-clone | ||
F04D F440 diff | ||
F04E F441 eye | ||
F04F F442 comment-discussion | ||
F051 F443 mail-reply | ||
F052 F444 primitive-dot | ||
F053 F445 primitive-square | ||
F056 F446 device-camera | ||
F057 F447 device-camera-video | ||
F058 F448 pencil | ||
F059 F449 info | ||
F05A F44A triangle-right | ||
F05B F44B triangle-down | ||
F05C F44C link | ||
F05D F44D plus | ||
F05E F44E three-bars | ||
F05F F44F code | ||
F060 F450 location | ||
F061 F451 list-unordered | ||
F062 F452 list-ordered | ||
F063 F453 quote | ||
F064 F454 versions | ||
F068 F455 calendar | ||
F06A F456 lock | ||
F06B F457 diff-added | ||
F06C F458 diff-removed | ||
F06D F459 diff-modified | ||
F06E F45A diff-renamed | ||
F070 F45B horizontal-rule | ||
F071 F45C arrow-small-right | ||
F075 F45D milestone | ||
F076 F45E checklist | ||
F077 F45F megaphone | ||
F078 F460 chevron-right | ||
F07B F461 bookmark | ||
F07C F462 settings | ||
F07D F463 dashboard | ||
F07E F464 history | ||
F07F F465 link-external | ||
F080 F466 mute | ||
F081 F467 x | ||
F084 F468 circle-slash | ||
F085 F469 pulse | ||
F087 F46A sync | ||
F088 F46B telescope | ||
F08C F46C gist-secret | ||
F08D F46D home | ||
F08F F46E stop | ||
F091 F46F bug | ||
F092 F470 logo-github | ||
F094 F471 file-binary | ||
F096 F472 database | ||
F097 F473 server | ||
F099 F474 diff-ignored | ||
F09A F475 ellipsis | ||
F09C F476 no-newline | ||
F09D F477 hubot | ||
F09F F478 arrow-small-up | ||
F0A0 F479 arrow-small-down | ||
F0A1 F47A arrow-small-left | ||
F0A2 F47B chevron-up | ||
F0A3 F47C chevron-down | ||
F0A4 F47D chevron-left | ||
F0AA F47E triangle-up | ||
F0AC F47F git-compare | ||
F0AD F480 logo-gist | ||
F0B0 F481 file-symlink-file | ||
F0B1 F482 file-symlink-directory | ||
F0B2 F483 squirrel | ||
F0B6 F484 globe | ||
F0BA F485 unmute | ||
F0BE F486 mention | ||
F0C4 F487 package | ||
F0C5 F488 browser | ||
F0C8 F489 terminal | ||
F0C9 F48A markdown | ||
F0CA F48B dash | ||
F0CC F48C fold | ||
F0CF F48D inbox | ||
F0D0 F48E trashcan | ||
F0D1 F48F paintcan | ||
F0D2 F490 flame | ||
F0D3 F491 briefcase | ||
F0D4 F492 plug | ||
F0D6 F493 circuit-board | ||
F0D7 F494 mortar-board | ||
F0D8 F495 law | ||
F0DA F496 thumbsup | ||
F0DB F497 thumbsdown | ||
F0DC F498 desktop-download | ||
F0DD F499 beaker | ||
F0DE F49A bell | ||
F0E0 F49B watch | ||
F0E1 F49C shield | ||
F0E2 F49D bold | ||
F0E3 F49E text-size | ||
F0E4 F49F italic | ||
F0E5 F4A0 tasklist | ||
F0E6 F4A1 verified | ||
F0E7 F4A2 smiley | ||
F0E8 F4A3 unverified | ||
F101 F4A4 ellipses | ||
F102 F4A5 file | ||
F103 F4A6 grabber | ||
F104 F4A7 plus-small | ||
F105 F4A8 reply | ||
F27C F4A9 device-desktop |
File renamed without changes.