From ca32ac89b6e6568aa70a427a2bf8b85a00e622cf Mon Sep 17 00:00:00 2001 From: Prateek Saxena Date: Tue, 14 Oct 2014 09:16:44 +0530 Subject: [PATCH] Add a subset of FontAwesome icons using Fontello Most of the code here has been taken from @LaKing's #2554. Only icons required for etherpad have been added. Here is a list of the code points that are being used: 0xe800 0xe801 0xe802 0xe803 0xe804 0xe805 0xe806 0xe807 0xe808 0xe809 0xe80a 0xe80b 0xe80c 0xe80d 0xe80e 0xe80f 0xe810 0xe811 0xe812 0xe813 0xe814 0xe815 0xe816 0xe817 Their related icon names can be seen in: /src/static/css/fontawesome-etherpad.css Even though this patch *adds* all the required icons it only uses them in the in toolbar. The switch to using only FontAwesome icons and the removal of old PNG files will only happen after the timeslider interface has been updated. This is the first step for #2253 --- src/static/css/fontawesome-etherpad.css | 76 ++++++++++++++++++ src/static/css/pad.css | 90 +++++++++++----------- src/static/font/fontawesome-etherpad.eot | Bin 0 -> 10200 bytes src/static/font/fontawesome-etherpad.svg | 35 +++++++++ src/static/font/fontawesome-etherpad.ttf | Bin 0 -> 9984 bytes src/static/font/fontawesome-etherpad.woff | Bin 0 -> 6188 bytes src/templates/pad.html | 1 + 7 files changed, 159 insertions(+), 43 deletions(-) create mode 100644 src/static/css/fontawesome-etherpad.css create mode 100644 src/static/font/fontawesome-etherpad.eot create mode 100644 src/static/font/fontawesome-etherpad.svg create mode 100644 src/static/font/fontawesome-etherpad.ttf create mode 100644 src/static/font/fontawesome-etherpad.woff diff --git a/src/static/css/fontawesome-etherpad.css b/src/static/css/fontawesome-etherpad.css new file mode 100644 index 00000000..13f28f2b --- /dev/null +++ b/src/static/css/fontawesome-etherpad.css @@ -0,0 +1,76 @@ +@font-face { + font-family: 'fontawesome-etherpad'; + src: url('../font/fontawesome-etherpad.eot?81419457'); + src: url('../font/fontawesome-etherpad.eot?81419457#iefix') format('embedded-opentype'), + url('../font/fontawesome-etherpad.woff?81419457') format('woff'), + url('../font/fontawesome-etherpad.ttf?81419457') format('truetype'), + url('../font/fontawesome-etherpad.svg?81419457#fontawesome-etherpad') format('svg'); + font-weight: normal; + font-style: normal; +} +/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ +/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ +/* +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: 'fontawesome-etherpad'; + src: url('../font/fontawesome-etherpad.svg?81419457#fontawesome-etherpad') format('svg'); + } +} +*/ + + [class^="icon-"]:before, [class*=" icon-"]:before { + font-family: "fontawesome-etherpad"; + font-style: normal; + font-weight: normal; + speak: none; + + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: .2em; + text-align: center; + /* opacity: .8; */ + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + + /* Animation center compensation - margins should be symmetric */ + /* remove if not needed */ + margin-left: .2em; + + /* you can be more comfortable with increased icons size */ + /* font-size: 120%; */ + + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ +} + +.icon-users:before { content: '\e800'; } /* '' */ +.icon-star:before { content: '\e801'; } /* '' */ +.icon-cog:before { content: '\e802'; } /* '' */ +.icon-bold:before { content: '\e803'; } /* '' */ +.icon-italic:before { content: '\e804'; } /* '' */ +.icon-indent-left:before { content: '\e805'; } /* '' */ +.icon-indent-right:before { content: '\e806'; } /* '' */ +.icon-list-bullet:before { content: '\e807'; } /* '' */ +.icon-list-numbered:before { content: '\e808'; } /* '' */ +.icon-strike:before { content: '\e809'; } /* '' */ +.icon-underline:before { content: '\e80a'; } /* '' */ +.icon-cw:before { content: '\e80b'; } /* '' */ +.icon-ccw:before { content: '\e80c'; } /* '' */ +.icon-clock:before { content: '\e80d'; } /* '' */ +.icon-eye-off:before { content: '\e80e'; } /* '' */ +.icon-eye:before { content: '\e80f'; } /* '' */ +.icon-play:before { content: '\e810'; } /* '' */ +.icon-fast-bw:before { content: '\e811'; } /* '' */ +.icon-fast-fw:before { content: '\e812'; } /* '' */ +.icon-pause:before { content: '\e813'; } /* '' */ +.icon-glass:before { content: '\e814'; } /* '' */ +.icon-code:before { content: '\e815'; } /* '' */ +.icon-exchange:before { content: '\e816'; } /* '' */ +.icon-chat:before { content: '\e817'; } /* '' */ \ No newline at end of file diff --git a/src/static/css/pad.css b/src/static/css/pad.css index 309eb833..599b9fd4 100644 --- a/src/static/css/pad.css +++ b/src/static/css/pad.css @@ -669,64 +669,68 @@ table#otheruserstable { .buttonicon { width: 16px; height: 16px; - background-image: url('../../static/img/etherpad_lite_icons.png'); - background-repeat: no-repeat; display: inline-block; vertical-align: middle; + + font-family: "fontawesome-etherpad"; + font-size: 15px; + font-style: normal; + font-weight: normal; + color: #666; } -.buttonicon-bold { - background-position: 0px -116px +.buttonicon-bold:before { + content: "\e803"; } -.buttonicon-italic { - background-position: 0px 0px +.buttonicon-italic:before { + content: "\e804"; } -.buttonicon-underline { - background-position: 0px -236px +.buttonicon-underline:before { + content: "\e80a"; } -.buttonicon-strikethrough { - background-position: 0px -200px +.buttonicon-strikethrough:before { + content: "\e809"; } -.buttonicon-insertorderedlist { - background-position: 0px -477px +.buttonicon-insertorderedlist:before { + content: "\e808"; } -.buttonicon-insertunorderedlist { - background-position: 0px -34px +.buttonicon-insertunorderedlist:before { + content: "\e807"; } -.buttonicon-indent { - background-position: 0px -52px +.buttonicon-indent:before { + content: "\e806"; } -.buttonicon-outdent { - background-position: 0px -134px +.buttonicon-outdent:before { + content: "\e805"; } -.buttonicon-undo { - background-position: 0px -255px +.buttonicon-undo:before { + content: "\e80c"; } -.buttonicon-redo { - background-position: 0px -166px +.buttonicon-redo:before { + content: "\e80b"; } -.buttonicon-clearauthorship { - background-position: 0px -86px +.buttonicon-clearauthorship:before { + content: "\e80e"; } -.buttonicon-settings { - background-position: 0px -436px +.buttonicon-settings:before { + content: "\e802"; } -.buttonicon-import_export { - background-position: 0px -68px +.buttonicon-import_export:before { + content: "\e816"; } -.buttonicon-embed { - background-position: 0px -18px +.buttonicon-embed:before { + content: "\e815"; } -.buttonicon-history { - background-position: 0px -218px +.buttonicon-history:before { + content: "\e80d"; } -.buttonicon-chat { - background-position: 0px -102px; +.buttonicon-chat:before { + content: "\e817"; } -.buttonicon-showusers { - background-position: 0px -183px; +.buttonicon-showusers:before { + content: "\e800"; } -.buttonicon-savedRevision { - background-position: 0px -493px +.buttonicon-savedRevision:before { + content: "\e801"; } #focusprotector { z-index: 100; @@ -838,7 +842,7 @@ input[type=checkbox] { border-left: 1px solid #ccc !important; width: 185px !important; } -@media screen and (max-width: 600px) { +@media screen and (max-width: 600px) { .toolbar ul li.separator { display: none; } @@ -856,7 +860,7 @@ input[type=checkbox] { left:0px; right:0px; color:#000; - } + } .gritter-close { display:block !important; left: auto !important; @@ -884,13 +888,13 @@ input[type=checkbox] { .gritter-item-wrapper > div{ background: none; } - #editorcontainer { + #editorcontainer { top: 68px; } - #editbar { + #editbar { height: 62px; } - .toolbar ul.menu_right { + .toolbar ul.menu_right { float: left; margin-top:2px; } diff --git a/src/static/font/fontawesome-etherpad.eot b/src/static/font/fontawesome-etherpad.eot new file mode 100644 index 0000000000000000000000000000000000000000..9a24fc67b57e3a10914eaf44d36b752b6985af05 GIT binary patch literal 10200 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 R&9BjGAJ>IXAv + + +Copyright (C) 2014 by original authors @ fontello.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/static/font/fontawesome-etherpad.ttf b/src/static/font/fontawesome-etherpad.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a179bd191b4083b045254772eb892f768a3779bd GIT binary patch literal 9984 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

g!zN~?zf@OJ<|ib$2bX&K&R1jv2?Wo4 zQO?Gh!bz1KPt4br->FYaDCqKw7tV0C_l7HIO`2qoVw`;23$jIoS7&$*Q)nJBdp|fa zL|Q3%syk?Y<8Sw@BADI&JM#zu^kUWF|9dwcNg6&;0z`^Sj8Kms_YpE^aU_FSH6XY} z3g^yR+>mLx*g0QUmzm*lM*bgJl`@?Vv9T|sC}`Z96yl@_ItHcbFJK&?UG#>aK`9w; z5#NI}|L3AhWE|3p&uFY`gO0 <% e.begin_block("styles"); %> +