From 25cfa0c03d94fd7ba705b4ad5bd22db7138bbdbb Mon Sep 17 00:00:00 2001 From: lessthanthree <83487515+lessthnthree@users.noreply.github.com> Date: Thu, 6 Jul 2023 12:07:34 -0700 Subject: [PATCH] Maptext 2023 tweaks 3 (#76552) ## About The Pull Request Hopefully the last set of changes in this demonstration of the [Goldilocks principle](https://en.wikipedia.org/wiki/Goldilocks_principle). Some more font changes, the big (hah) one being the context tooltips again. - Context tooltips smaller main line, more compact sublines. - Improves documentation on the usage of the macros. - Removes incorrect comment I added earlier in tgstation.dme - Adds black outlines as default in the macros. - Icon sized letters (Dwarf Fortress, credits). - Deathrattle and other actions reduced spacing. - Aligned cooldowns/countdowns.
Screenshots ![image](https://github.com/tgstation/tgstation/assets/83487515/9d704e77-619e-45d1-961e-48f48bec4577) ![image](https://github.com/tgstation/tgstation/assets/83487515/e6d07bc1-1c8f-41e1-bdb5-1241a04873c4) ![image](https://github.com/tgstation/tgstation/assets/83487515/cb3f3def-74b9-4872-be9b-76c4b412b2e2) ![image](https://github.com/tgstation/tgstation/assets/83487515/daab8376-edb6-4866-875b-28c7fb3b0a8a) ![image](https://github.com/tgstation/tgstation/assets/83487515/2242dab4-affe-4e9c-a10a-c668fa2555a5) ![image](https://github.com/tgstation/tgstation/assets/83487515/735280b2-4054-4588-bb59-b1d35e56b989) ![image](https://github.com/tgstation/tgstation/assets/83487515/ee44b961-452f-4407-9fdf-337a6e20ad37)
## Changelog :cl: LT3 image: More maptext and font tweaks spellcheck: Context tooltips too small, too big... just right? /:cl: --------- Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com> --- code/__DEFINES/text.dm | 41 ++- code/__HELPERS/icons.dm | 2 +- code/_onclick/hud/credits.dm | 2 +- code/datums/actions/cooldown_action.dm | 10 +- code/game/atoms.dm | 10 +- code/game/objects/effects/countdown.dm | 2 +- code/modules/events/wizard/rpgtitles.dm | 2 +- .../elevator/elevator_indicator.dm | 2 +- interface/fonts/Pixellari.ttf | Bin 0 -> 39908 bytes interface/fonts/SpessFont.ttf | Bin 0 -> 7692 bytes interface/fonts/license.txt | 11 +- interface/fonts/pixellari.dm | 252 ++++++++++++++++++ interface/fonts/spess_font.dm | 252 ++++++++++++++++++ interface/skin.dmf | 2 +- tgstation.dme | 2 + 15 files changed, 563 insertions(+), 27 deletions(-) create mode 100644 interface/fonts/Pixellari.ttf create mode 100644 interface/fonts/SpessFont.ttf create mode 100644 interface/fonts/pixellari.dm create mode 100644 interface/fonts/spess_font.dm diff --git a/code/__DEFINES/text.dm b/code/__DEFINES/text.dm index 3ac499c7d93..8a7731618bb 100644 --- a/code/__DEFINES/text.dm +++ b/code/__DEFINES/text.dm @@ -1,21 +1,46 @@ /// Does 4 spaces. Used as a makeshift tabulator. #define FOURSPACES "    " +/// Standard maptext /// Prepares a text to be used for maptext. Use this so it doesn't look hideous. #define MAPTEXT(text) {"[##text]"} +/** + * Pixel-perfect scaled fonts for use in the MAP element as defined in skin.dmf + * + * Four sizes to choose from, use the sizes as mentioned below. + * Between the variations and a step there should be an option that fits your use case. + * BYOND uses pt sizing, different than px used in TGUI. Using px will make it look blurry due to poor antialiasing. + * + * Default sizes are prefilled in the macro for ease of use and a consistent visual look. + * To use a step other than the default in the macro, specify it in a span style. + * For example: MAPTEXT_PIXELLARI("Some large maptext here") + */ +/// Large size (ie: context tooltips) - Size options: 12pt 24pt. +#define MAPTEXT_PIXELLARI(text) {"[##text]"} + +/// Standard size (ie: normal runechat) - Size options: 6pt 12pt 18pt. +#define MAPTEXT_GRAND9K(text) {"[##text]"} + +/// Small size. (ie: context subtooltips, spell delays) - Size options: 12pt 24pt. +#define MAPTEXT_TINY_UNICODE(text) {"[##text]"} + +/// Smallest size. (ie: whisper runechat) - Size options: 6pt 12pt 18pt. +#define MAPTEXT_SPESSFONT(text) {"[##text]"} + +/** + * Prepares a text to be used for maptext, using a variable size font. + * + * More flexible but doesn't scale pixel perfect to BYOND icon resolutions. + * (May be blurry.) Can use any size in pt or px. + * + * You MUST Specify the size when using the macro + * For example: MAPTEXT_VCR_OSD_MONO("Some large maptext here") + */ /// Prepares a text to be used for maptext, using a variable size font. /// Variable size font. More flexible but doesn't scale pixel perfect to BYOND icon resolutions. (May be blurry.) Can use any size in pt or px. #define MAPTEXT_VCR_OSD_MONO(text) {"[##text]"} -/// Prepares a text to be used for maptext using a pixel font. Cleaner but less size choices. -/// Standard size (ie: normal runechat) Use only sizing pt, multiples of 6: 6pt 12pt 18pt 24pt etc. - Not for use with px sizing -#define MAPTEXT_GRAND9K(text) {"[##text]"} - -/// Prepares a text to be used for maptext using a pixel font. Cleaner but less size choices. -/// Small size. (ie: whisper runechat) Use only size pt, multiples of 12: 12pt 24pt 48pt etc. - Not for use with px sizing -#define MAPTEXT_TINY_UNICODE(text) {"[##text]"} - /// Macro from Lummox used to get height from a MeasureText proc. /// resolves the MeasureText() return value once, then resolves the height, then sets return_var to that. #define WXH_TO_HEIGHT(measurement, return_var) \ diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index eb35fbd5b24..7f2a19bd85d 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -992,7 +992,7 @@ world letter = lowertext(letter) var/image/text_image = new(loc = A) - text_image.maptext = MAPTEXT_TINY_UNICODE("[letter]") + text_image.maptext = MAPTEXT("[letter]") text_image.pixel_x = 7 text_image.pixel_y = 5 qdel(atom_icon) diff --git a/code/_onclick/hud/credits.dm b/code/_onclick/hud/credits.dm index 6de4b735bd1..e39e1ef36d0 100644 --- a/code/_onclick/hud/credits.dm +++ b/code/_onclick/hud/credits.dm @@ -44,7 +44,7 @@ icon = I parent = P icon_state = credited - maptext = MAPTEXT(credited) + maptext = MAPTEXT_PIXELLARI(credited) maptext_x = world.icon_size + 8 maptext_y = (world.icon_size / 2) - 4 maptext_width = world.icon_size * 3 diff --git a/code/datums/actions/cooldown_action.dm b/code/datums/actions/cooldown_action.dm index 6be6e02859f..29bf2ff48ca 100644 --- a/code/datums/actions/cooldown_action.dm +++ b/code/datums/actions/cooldown_action.dm @@ -66,10 +66,10 @@ /datum/action/cooldown/create_button() var/atom/movable/screen/movable/action_button/button = ..() button.maptext = "" - button.maptext_x = 6 + button.maptext_x = 4 button.maptext_y = 2 - button.maptext_width = 24 - button.maptext_height = 12 + button.maptext_width = 32 + button.maptext_height = 16 return button /datum/action/cooldown/update_button_status(atom/movable/screen/movable/action_button/button, force = FALSE) @@ -79,9 +79,9 @@ button.maptext = "" else if (cooldown_rounding > 0) - button.maptext = MAPTEXT("[round(time_left/10, cooldown_rounding)]") + button.maptext = MAPTEXT_TINY_UNICODE("[round(time_left/10, cooldown_rounding)]") else - button.maptext = MAPTEXT("[round(time_left/10)]") + button.maptext = MAPTEXT_TINY_UNICODE("[round(time_left/10)]") if(!IsAvailable() || !is_action_active(button)) return diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 936d4054b47..bcd9e0b6f9e 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -2035,7 +2035,7 @@ active_hud.screentip_text.maptext = "" return - active_hud.screentip_text.maptext_y = 7 // 7px lines us up with the action buttons top left corner + active_hud.screentip_text.maptext_y = 10 // 10px lines us up with the action buttons top left corner var/lmb_rmb_line = "" var/ctrl_lmb_ctrl_rmb_line = "" var/alt_lmb_alt_rmb_line = "" @@ -2102,15 +2102,15 @@ extra_lines++ if(extra_lines) - extra_context = "
[lmb_rmb_line][ctrl_lmb_ctrl_rmb_line][alt_lmb_alt_rmb_line][shift_lmb_ctrl_shift_lmb_line]" - //first extra line pushes atom name line up 8px, subsequent lines push it up 10px, this offsets that and keeps the first line in the same place - active_hud.screentip_text.maptext_y = -1 + (extra_lines - 1) * -10 + extra_context = "
[lmb_rmb_line][ctrl_lmb_ctrl_rmb_line][alt_lmb_alt_rmb_line][shift_lmb_ctrl_shift_lmb_line]" + //first extra line pushes atom name line up 11px, subsequent lines push it up 9px, this offsets that and keeps the first line in the same place + active_hud.screentip_text.maptext_y = -1 + (extra_lines - 1) * -9 if (screentips_enabled == SCREENTIP_PREFERENCE_CONTEXT_ONLY && extra_context == "") active_hud.screentip_text.maptext = "" else //We inline a MAPTEXT() here, because there's no good way to statically add to a string like this - active_hud.screentip_text.maptext = "[name][extra_context]" + active_hud.screentip_text.maptext = "[name][extra_context]" /// Gets a merger datum representing the connected blob of objects in the allowed_types argument /atom/proc/GetMergeGroup(id, list/allowed_types) diff --git a/code/game/objects/effects/countdown.dm b/code/game/objects/effects/countdown.dm index 5e6a46796fb..f820397c0d9 100644 --- a/code/game/objects/effects/countdown.dm +++ b/code/game/objects/effects/countdown.dm @@ -108,7 +108,7 @@ var/obj/machinery/power/supermatter_crystal/S = attached_to if(!istype(S)) return - return "
[round(S.get_integrity_percent())]%
" + return "
[round(S.get_integrity_percent())]%
" /obj/effect/countdown/transformer name = "transformer countdown" diff --git a/code/modules/events/wizard/rpgtitles.dm b/code/modules/events/wizard/rpgtitles.dm index 587c11ad550..37eae2459f6 100644 --- a/code/modules/events/wizard/rpgtitles.dm +++ b/code/modules/events/wizard/rpgtitles.dm @@ -90,7 +90,7 @@ GLOBAL_DATUM(rpgtitle_controller, /datum/rpgtitle_controller) maptext_title += "[applicable_biotypes[iteration][1]] " //mother of all strings... - new_crewmember.maptext = "Level [rand(1, 100)] [maptext_title]" + new_crewmember.maptext = MAPTEXT_TINY_UNICODE("Level [rand(1, 100)] [maptext_title]") if(!(job.job_flags & JOB_CREW_MEMBER)) return diff --git a/code/modules/industrial_lift/elevator/elevator_indicator.dm b/code/modules/industrial_lift/elevator/elevator_indicator.dm index f0aec0c2217..77518a4bdc8 100644 --- a/code/modules/industrial_lift/elevator/elevator_indicator.dm +++ b/code/modules/industrial_lift/elevator/elevator_indicator.dm @@ -150,7 +150,7 @@ return set_light(l_on = TRUE) - maptext = MAPTEXT_TINY_UNICODE("
[current_lift_floor]
") + maptext = "
[current_lift_floor]
" /obj/machinery/lift_indicator/update_overlays() . = ..() diff --git a/interface/fonts/Pixellari.ttf b/interface/fonts/Pixellari.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5a3a3c2b1104814e62854d43e4f5cffe51216707 GIT binary patch literal 39908 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 BI|={* literal 0 HcmV?d00001 diff --git a/interface/fonts/license.txt b/interface/fonts/license.txt index 800b033f887..9aa70fbac2a 100644 --- a/interface/fonts/license.txt +++ b/interface/fonts/license.txt @@ -1,8 +1,13 @@ -VCR OSD Mono created by Riciery Leal/mrmanet. Website indicates 100% free, author confirms it's free for all to use. -(https://www.dafont.com/font-comment.php?file=vcr_osd_mono) - Grand9K Pixel created by Jayvee Enaguas. Licensed under Creative Commons Attribution 4.0 International (CC BY 4.0) (https://creativecommons.org/licenses/by/4.0/) (https://www.dafont.com/grand9k-pixel.font) +Pixellari created by Zacchary Dempsey-Plante. Website indicates free for commercial use. +(https://www.dafont.com/pixellari.font?fpp=200) + +Spess Font created by MTandi (discord) for /tg/station. + Tiny Unicode created by Jakob Riedle/DuffsDevice. Website indicates free for commercial use. (https://fontmeme.com/fonts/tiny-unicode-font/) + +VCR OSD Mono created by Riciery Leal/mrmanet. Website indicates 100% free, author confirms it's free for all to use. +(https://www.dafont.com/font-comment.php?file=vcr_osd_mono) diff --git a/interface/fonts/pixellari.dm b/interface/fonts/pixellari.dm new file mode 100644 index 00000000000..24fcd1961fe --- /dev/null +++ b/interface/fonts/pixellari.dm @@ -0,0 +1,252 @@ +/// For clean results on map, use only sizing pt, multiples of 12: 12pt 24pt 48pt etc. - Not for use with px sizing +/// Can be used in TGUI etc, px sizing is pt / 0.75. 12pt = 16px, 24pt = 32px etc. + +/// Base font +/datum/font/pixellari + name = "Pixellari" + font_family = 'interface/fonts/Pixellari.ttf' + +/// For icon overlays +/// Pixellari 12pt metrics generated using Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus) +/// Note: these variable names have been changed, so you can't straight copy/paste from dmifontsplus.exe +/datum/font/pixellari/size_12pt + name = "Pixellari 12pt" + height = 16 + ascent = 12 + descent = 4 + average_width = 7 + max_width = 15 + overhang = 0 + in_leading = 0 + ex_leading = 1 + default_character = 31 + start = 30 + end = 255 + metrics = list(\ + 1, 5, 0, /* char 30 */ \ + 1, 5, 0, /* char 31 */ \ + 0, 1, 4, /* char 32 */ \ + 1, 2, 1, /* char 33 */ \ + 1, 5, 1, /* char 34 */ \ + 0, 8, 1, /* char 35 */ \ + 2, 6, 1, /* char 36 */ \ + 0, 13, 1, /* char 37 */ \ + 1, 8, 1, /* char 38 */ \ + 1, 2, 1, /* char 39 */ \ + 1, 3, 1, /* char 40 */ \ + 2, 3, 1, /* char 41 */ \ + 0, 6, 1, /* char 42 */ \ + 1, 6, 1, /* char 43 */ \ + 1, 2, 1, /* char 44 */ \ + 1, 6, 1, /* char 45 */ \ + 1, 2, 1, /* char 46 */ \ + 0, 6, 1, /* char 47 */ \ + 1, 7, 1, /* char 48 */ \ + 2, 6, 1, /* char 49 */ \ + 1, 6, 1, /* char 50 */ \ + 1, 6, 1, /* char 51 */ \ + 1, 7, 1, /* char 52 */ \ + 1, 6, 1, /* char 53 */ \ + 1, 6, 1, /* char 54 */ \ + 1, 7, 1, /* char 55 */ \ + 1, 6, 1, /* char 56 */ \ + 1, 6, 1, /* char 57 */ \ + 1, 2, 1, /* char 58 */ \ + 1, 2, 1, /* char 59 */ \ + 0, 10, 1, /* char 60 */ \ + 1, 6, 1, /* char 61 */ \ + 0, 10, 1, /* char 62 */ \ + 1, 6, 1, /* char 63 */ \ + 1, 12, 1, /* char 64 */ \ + 1, 8, 1, /* char 65 */ \ + 1, 8, 1, /* char 66 */ \ + 2, 7, 1, /* char 67 */ \ + 2, 8, 1, /* char 68 */ \ + 2, 6, 1, /* char 69 */ \ + 2, 6, 1, /* char 70 */ \ + 2, 7, 1, /* char 71 */ \ + 1, 8, 1, /* char 72 */ \ + 1, 4, 1, /* char 73 */ \ + 0, 7, 1, /* char 74 */ \ + 1, 8, 1, /* char 75 */ \ + 1, 6, 1, /* char 76 */ \ + 1, 10, 1, /* char 77 */ \ + 1, 9, 1, /* char 78 */ \ + 2, 8, 1, /* char 79 */ \ + 1, 7, 1, /* char 80 */ \ + 2, 9, 1, /* char 81 */ \ + 1, 8, 1, /* char 82 */ \ + 1, 8, 1, /* char 83 */ \ + 1, 8, 1, /* char 84 */ \ + 2, 8, 1, /* char 85 */ \ + 2, 8, 1, /* char 86 */ \ + 1, 10, 1, /* char 87 */ \ + 1, 8, 1, /* char 88 */ \ + 1, 8, 1, /* char 89 */ \ + 0, 10, 1, /* char 90 */ \ + 1, 3, 1, /* char 91 */ \ + 0, 6, 1, /* char 92 */ \ + 2, 3, 1, /* char 93 */ \ + 0, 7, 1, /* char 94 */ \ + 0, 8, 1, /* char 95 */ \ + 1, 3, 1, /* char 96 */ \ + 1, 6, 1, /* char 97 */ \ + 1, 7, 1, /* char 98 */ \ + 1, 6, 1, /* char 99 */ \ + 1, 7, 1, /* char 100 */ \ + 1, 6, 1, /* char 101 */ \ + 1, 4, 1, /* char 102 */ \ + 1, 7, 1, /* char 103 */ \ + 1, 7, 1, /* char 104 */ \ + 1, 2, 1, /* char 105 */ \ + -1, 4, 1, /* char 106 */ \ + 0, 7, 1, /* char 107 */ \ + 1, 2, 1, /* char 108 */ \ + 1, 10, 1, /* char 109 */ \ + 1, 6, 1, /* char 110 */ \ + 1, 6, 1, /* char 111 */ \ + 1, 7, 1, /* char 112 */ \ + 1, 7, 1, /* char 113 */ \ + 1, 6, 1, /* char 114 */ \ + 1, 6, 1, /* char 115 */ \ + 0, 4, 1, /* char 116 */ \ + 1, 6, 1, /* char 117 */ \ + 1, 6, 1, /* char 118 */ \ + 1, 10, 1, /* char 119 */ \ + 1, 6, 1, /* char 120 */ \ + 1, 6, 1, /* char 121 */ \ + 1, 6, 1, /* char 122 */ \ + 0, 5, 1, /* char 123 */ \ + 1, 2, 1, /* char 124 */ \ + 0, 5, 1, /* char 125 */ \ + 1, 8, 1, /* char 126 */ \ + 1, 5, 0, /* char 127 */ \ + 1, 8, 1, /* char 128 */ \ + 1, 5, 0, /* char 129 */ \ + 1, 5, 0, /* char 130 */ \ + 1, 5, 0, /* char 131 */ \ + 1, 5, 0, /* char 132 */ \ + 1, 5, 0, /* char 133 */ \ + 1, 5, 0, /* char 134 */ \ + 1, 5, 0, /* char 135 */ \ + 1, 5, 0, /* char 136 */ \ + 1, 5, 0, /* char 137 */ \ + 1, 8, 1, /* char 138 */ \ + 1, 5, 0, /* char 139 */ \ + 0, 14, 1, /* char 140 */ \ + 1, 5, 0, /* char 141 */ \ + 0, 10, 1, /* char 142 */ \ + 1, 5, 0, /* char 143 */ \ + 1, 5, 0, /* char 144 */ \ + 1, 5, 0, /* char 145 */ \ + 1, 5, 0, /* char 146 */ \ + 1, 5, 0, /* char 147 */ \ + 1, 5, 0, /* char 148 */ \ + 1, 5, 0, /* char 149 */ \ + 1, 5, 0, /* char 150 */ \ + 1, 5, 0, /* char 151 */ \ + 1, 5, 0, /* char 152 */ \ + 1, 5, 0, /* char 153 */ \ + 1, 6, 1, /* char 154 */ \ + 1, 5, 0, /* char 155 */ \ + 1, 11, 1, /* char 156 */ \ + 1, 5, 0, /* char 157 */ \ + 1, 6, 1, /* char 158 */ \ + 1, 8, 1, /* char 159 */ \ + 0, 1, 4, /* char 160 */ \ + 1, 2, 1, /* char 161 */ \ + 1, 6, 1, /* char 162 */ \ + 0, 8, 1, /* char 163 */ \ + 0, 9, 1, /* char 164 */ \ + 1, 8, 1, /* char 165 */ \ + 1, 2, 1, /* char 166 */ \ + 1, 7, 1, /* char 167 */ \ + 0, 5, 1, /* char 168 */ \ + -1, 12, 1, /* char 169 */ \ + 0, 6, 1, /* char 170 */ \ + 0, 8, 1, /* char 171 */ \ + 1, 8, 1, /* char 172 */ \ + 1, 5, 0, /* char 173 */ \ + -1, 12, 1, /* char 174 */ \ + 2, 4, 1, /* char 175 */ \ + 0, 6, 1, /* char 176 */ \ + 1, 6, 1, /* char 177 */ \ + 0, 5, 1, /* char 178 */ \ + 0, 5, 1, /* char 179 */ \ + 1, 3, 1, /* char 180 */ \ + 1, 6, 1, /* char 181 */ \ + 1, 7, 1, /* char 182 */ \ + 1, 2, 1, /* char 183 */ \ + 1, 3, 1, /* char 184 */ \ + 1, 4, 1, /* char 185 */ \ + 0, 6, 1, /* char 186 */ \ + 0, 8, 1, /* char 187 */ \ + 1, 13, 1, /* char 188 */ \ + 1, 12, 1, /* char 189 */ \ + 0, 13, 1, /* char 190 */ \ + 1, 6, 1, /* char 191 */ \ + 1, 8, 1, /* char 192 */ \ + 1, 8, 1, /* char 193 */ \ + 1, 8, 1, /* char 194 */ \ + 1, 8, 1, /* char 195 */ \ + 1, 8, 1, /* char 196 */ \ + 1, 8, 1, /* char 197 */ \ + 0, 13, 1, /* char 198 */ \ + 2, 7, 1, /* char 199 */ \ + 2, 6, 1, /* char 200 */ \ + 2, 6, 1, /* char 201 */ \ + 2, 6, 1, /* char 202 */ \ + 2, 6, 1, /* char 203 */ \ + 1, 4, 1, /* char 204 */ \ + 1, 4, 1, /* char 205 */ \ + 1, 4, 1, /* char 206 */ \ + 1, 4, 1, /* char 207 */ \ + 0, 10, 1, /* char 208 */ \ + 1, 9, 1, /* char 209 */ \ + 2, 8, 1, /* char 210 */ \ + 2, 8, 1, /* char 211 */ \ + 2, 8, 1, /* char 212 */ \ + 2, 8, 1, /* char 213 */ \ + 2, 8, 1, /* char 214 */ \ + 1, 6, 1, /* char 215 */ \ + -2, 14, 1, /* char 216 */ \ + 2, 8, 1, /* char 217 */ \ + 2, 8, 1, /* char 218 */ \ + 2, 8, 1, /* char 219 */ \ + 2, 8, 1, /* char 220 */ \ + 1, 8, 1, /* char 221 */ \ + 1, 8, 1, /* char 222 */ \ + 1, 8, 1, /* char 223 */ \ + 1, 6, 1, /* char 224 */ \ + 1, 6, 1, /* char 225 */ \ + 1, 6, 1, /* char 226 */ \ + 1, 6, 1, /* char 227 */ \ + 1, 6, 1, /* char 228 */ \ + 1, 6, 1, /* char 229 */ \ + 1, 11, 1, /* char 230 */ \ + 1, 6, 1, /* char 231 */ \ + 1, 6, 1, /* char 232 */ \ + 1, 6, 1, /* char 233 */ \ + 1, 6, 1, /* char 234 */ \ + 1, 6, 1, /* char 235 */ \ + 1, 2, 1, /* char 236 */ \ + 1, 2, 1, /* char 237 */ \ + 0, 4, 1, /* char 238 */ \ + 0, 4, 1, /* char 239 */ \ + 1, 7, 1, /* char 240 */ \ + 1, 6, 1, /* char 241 */ \ + 1, 6, 1, /* char 242 */ \ + 1, 6, 1, /* char 243 */ \ + 1, 6, 1, /* char 244 */ \ + 1, 6, 1, /* char 245 */ \ + 1, 6, 1, /* char 246 */ \ + 1, 6, 1, /* char 247 */ \ + 0, 10, 1, /* char 248 */ \ + 1, 6, 1, /* char 249 */ \ + 1, 6, 1, /* char 250 */ \ + 1, 6, 1, /* char 251 */ \ + 1, 6, 1, /* char 252 */ \ + 1, 6, 1, /* char 253 */ \ + 1, 8, 1, /* char 254 */ \ + 1, 6, 1, /* char 255 */ \ + 226) diff --git a/interface/fonts/spess_font.dm b/interface/fonts/spess_font.dm new file mode 100644 index 00000000000..07e8ea5b3ba --- /dev/null +++ b/interface/fonts/spess_font.dm @@ -0,0 +1,252 @@ +/// For clean results on map, use only sizing pt, multiples of 6: 6t 12pt 18pt etc. - Not for use with px sizing +/// Can be used in TGUI etc, px sizing is pt / 0.75. 12pt = 16px, 24pt = 32px etc. + +/// Base font +/datum/font/spessfont + name = "Spess Font" + font_family = 'interface/fonts/SpessFont.ttf' + +/// For icon overlays +/// Spess Font 6pt metrics generated using Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus) +/// Note: these variable names have been changed, so you can't straight copy/paste from dmifontsplus.exe +/datum/font/spessfont/size_6pt + name = "Spess Font 6pt" + height = 8 + ascent = 6 + descent = 2 + average_width = 4 + max_width = 6 + overhang = 0 + in_leading = 0 + ex_leading = 0 + default_character = 31 + start = 30 + end = 255 + metrics = list(\ + 0, 1, 0, /* char 30 */ \ + 0, 1, 0, /* char 31 */ \ + 0, 1, 1, /* char 32 */ \ + 0, 1, 1, /* char 33 */ \ + 0, 3, 1, /* char 34 */ \ + 0, 5, 1, /* char 35 */ \ + 0, 3, 1, /* char 36 */ \ + 0, 5, 1, /* char 37 */ \ + 0, 5, 1, /* char 38 */ \ + 0, 1, 1, /* char 39 */ \ + 0, 2, 1, /* char 40 */ \ + 0, 2, 1, /* char 41 */ \ + 0, 3, 1, /* char 42 */ \ + 0, 3, 1, /* char 43 */ \ + 0, 1, 1, /* char 44 */ \ + 0, 3, 1, /* char 45 */ \ + 0, 1, 1, /* char 46 */ \ + 0, 3, 1, /* char 47 */ \ + 0, 4, 1, /* char 48 */ \ + 0, 2, 1, /* char 49 */ \ + 0, 4, 1, /* char 50 */ \ + 0, 4, 1, /* char 51 */ \ + 0, 4, 1, /* char 52 */ \ + 0, 4, 1, /* char 53 */ \ + 0, 4, 1, /* char 54 */ \ + 0, 4, 1, /* char 55 */ \ + 0, 4, 1, /* char 56 */ \ + 0, 4, 1, /* char 57 */ \ + 0, 1, 1, /* char 58 */ \ + 0, 1, 1, /* char 59 */ \ + 0, 3, 1, /* char 60 */ \ + 0, 3, 1, /* char 61 */ \ + 0, 3, 1, /* char 62 */ \ + 0, 3, 1, /* char 63 */ \ + 0, 4, 1, /* char 64 */ \ + 0, 4, 1, /* char 65 */ \ + 0, 4, 1, /* char 66 */ \ + 0, 4, 1, /* char 67 */ \ + 0, 4, 1, /* char 68 */ \ + 0, 4, 1, /* char 69 */ \ + 0, 4, 1, /* char 70 */ \ + 0, 4, 1, /* char 71 */ \ + 0, 4, 1, /* char 72 */ \ + 0, 3, 1, /* char 73 */ \ + 0, 4, 1, /* char 74 */ \ + 0, 4, 1, /* char 75 */ \ + 0, 4, 1, /* char 76 */ \ + 0, 5, 1, /* char 77 */ \ + 0, 4, 1, /* char 78 */ \ + 0, 4, 1, /* char 79 */ \ + 0, 4, 1, /* char 80 */ \ + 0, 4, 1, /* char 81 */ \ + 0, 4, 1, /* char 82 */ \ + 0, 4, 1, /* char 83 */ \ + 0, 5, 1, /* char 84 */ \ + 0, 4, 1, /* char 85 */ \ + 0, 4, 1, /* char 86 */ \ + 0, 5, 1, /* char 87 */ \ + 0, 5, 1, /* char 88 */ \ + 0, 4, 1, /* char 89 */ \ + 0, 4, 1, /* char 90 */ \ + 0, 2, 1, /* char 91 */ \ + 0, 3, 1, /* char 92 */ \ + 0, 2, 1, /* char 93 */ \ + 0, 3, 1, /* char 94 */ \ + 0, 4, 1, /* char 95 */ \ + 0, 2, 1, /* char 96 */ \ + 0, 3, 1, /* char 97 */ \ + 0, 4, 1, /* char 98 */ \ + 0, 3, 1, /* char 99 */ \ + 0, 4, 1, /* char 100 */ \ + 0, 3, 1, /* char 101 */ \ + 0, 2, 1, /* char 102 */ \ + 0, 4, 1, /* char 103 */ \ + 0, 3, 1, /* char 104 */ \ + 0, 1, 1, /* char 105 */ \ + 0, 1, 1, /* char 106 */ \ + 0, 3, 1, /* char 107 */ \ + 0, 1, 1, /* char 108 */ \ + 0, 5, 1, /* char 109 */ \ + 0, 3, 1, /* char 110 */ \ + 0, 4, 1, /* char 111 */ \ + 0, 4, 1, /* char 112 */ \ + 0, 4, 1, /* char 113 */ \ + 0, 2, 1, /* char 114 */ \ + 0, 3, 1, /* char 115 */ \ + 0, 2, 1, /* char 116 */ \ + 0, 3, 1, /* char 117 */ \ + 0, 3, 1, /* char 118 */ \ + 0, 5, 1, /* char 119 */ \ + 0, 3, 1, /* char 120 */ \ + 0, 3, 1, /* char 121 */ \ + 0, 3, 1, /* char 122 */ \ + 0, 3, 1, /* char 123 */ \ + 0, 1, 1, /* char 124 */ \ + 0, 3, 1, /* char 125 */ \ + 0, 4, 1, /* char 126 */ \ + 0, 1, 0, /* char 127 */ \ + 0, 1, 0, /* char 128 */ \ + 0, 1, 0, /* char 129 */ \ + 0, 1, 0, /* char 130 */ \ + 0, 1, 0, /* char 131 */ \ + 0, 1, 0, /* char 132 */ \ + 0, 1, 0, /* char 133 */ \ + 0, 1, 0, /* char 134 */ \ + 0, 1, 0, /* char 135 */ \ + 0, 1, 0, /* char 136 */ \ + 0, 1, 0, /* char 137 */ \ + 0, 1, 0, /* char 138 */ \ + 0, 1, 0, /* char 139 */ \ + 0, 1, 0, /* char 140 */ \ + 0, 1, 0, /* char 141 */ \ + 0, 1, 0, /* char 142 */ \ + 0, 1, 0, /* char 143 */ \ + 0, 1, 0, /* char 144 */ \ + 0, 1, 0, /* char 145 */ \ + 0, 1, 0, /* char 146 */ \ + 0, 1, 0, /* char 147 */ \ + 0, 1, 0, /* char 148 */ \ + 0, 1, 0, /* char 149 */ \ + 0, 1, 0, /* char 150 */ \ + 0, 1, 0, /* char 151 */ \ + 0, 1, 0, /* char 152 */ \ + 0, 1, 0, /* char 153 */ \ + 0, 1, 0, /* char 154 */ \ + 0, 1, 0, /* char 155 */ \ + 0, 1, 0, /* char 156 */ \ + 0, 1, 0, /* char 157 */ \ + 0, 1, 0, /* char 158 */ \ + 0, 1, 0, /* char 159 */ \ + 0, 1, 0, /* char 160 */ \ + 0, 1, 0, /* char 161 */ \ + 0, 1, 0, /* char 162 */ \ + 0, 1, 0, /* char 163 */ \ + 0, 1, 0, /* char 164 */ \ + 0, 1, 0, /* char 165 */ \ + 0, 1, 0, /* char 166 */ \ + 0, 1, 0, /* char 167 */ \ + 0, 1, 0, /* char 168 */ \ + 0, 1, 0, /* char 169 */ \ + 0, 1, 0, /* char 170 */ \ + 0, 1, 0, /* char 171 */ \ + 0, 1, 0, /* char 172 */ \ + 0, 1, 0, /* char 173 */ \ + 0, 1, 0, /* char 174 */ \ + 0, 1, 0, /* char 175 */ \ + 0, 1, 0, /* char 176 */ \ + 0, 1, 0, /* char 177 */ \ + 0, 1, 0, /* char 178 */ \ + 0, 1, 0, /* char 179 */ \ + 0, 1, 0, /* char 180 */ \ + 0, 1, 0, /* char 181 */ \ + 0, 1, 0, /* char 182 */ \ + 0, 1, 0, /* char 183 */ \ + 0, 1, 0, /* char 184 */ \ + 0, 1, 0, /* char 185 */ \ + 0, 1, 0, /* char 186 */ \ + 0, 1, 0, /* char 187 */ \ + 0, 1, 0, /* char 188 */ \ + 0, 1, 0, /* char 189 */ \ + 0, 1, 0, /* char 190 */ \ + 0, 1, 0, /* char 191 */ \ + 0, 1, 0, /* char 192 */ \ + 0, 1, 0, /* char 193 */ \ + 0, 1, 0, /* char 194 */ \ + 0, 1, 0, /* char 195 */ \ + 0, 1, 0, /* char 196 */ \ + 0, 1, 0, /* char 197 */ \ + 0, 1, 0, /* char 198 */ \ + 0, 1, 0, /* char 199 */ \ + 0, 1, 0, /* char 200 */ \ + 0, 1, 0, /* char 201 */ \ + 0, 1, 0, /* char 202 */ \ + 0, 1, 0, /* char 203 */ \ + 0, 1, 0, /* char 204 */ \ + 0, 1, 0, /* char 205 */ \ + 0, 1, 0, /* char 206 */ \ + 0, 1, 0, /* char 207 */ \ + 0, 1, 0, /* char 208 */ \ + 0, 1, 0, /* char 209 */ \ + 0, 1, 0, /* char 210 */ \ + 0, 1, 0, /* char 211 */ \ + 0, 1, 0, /* char 212 */ \ + 0, 1, 0, /* char 213 */ \ + 0, 1, 0, /* char 214 */ \ + 0, 1, 0, /* char 215 */ \ + 0, 1, 0, /* char 216 */ \ + 0, 1, 0, /* char 217 */ \ + 0, 1, 0, /* char 218 */ \ + 0, 1, 0, /* char 219 */ \ + 0, 1, 0, /* char 220 */ \ + 0, 1, 0, /* char 221 */ \ + 0, 1, 0, /* char 222 */ \ + 0, 1, 0, /* char 223 */ \ + 0, 1, 0, /* char 224 */ \ + 0, 1, 0, /* char 225 */ \ + 0, 1, 0, /* char 226 */ \ + 0, 1, 0, /* char 227 */ \ + 0, 1, 0, /* char 228 */ \ + 0, 1, 0, /* char 229 */ \ + 0, 1, 0, /* char 230 */ \ + 0, 1, 0, /* char 231 */ \ + 0, 1, 0, /* char 232 */ \ + 0, 1, 0, /* char 233 */ \ + 0, 1, 0, /* char 234 */ \ + 0, 1, 0, /* char 235 */ \ + 0, 1, 0, /* char 236 */ \ + 0, 1, 0, /* char 237 */ \ + 0, 1, 0, /* char 238 */ \ + 0, 1, 0, /* char 239 */ \ + 0, 1, 0, /* char 240 */ \ + 0, 1, 0, /* char 241 */ \ + 0, 1, 0, /* char 242 */ \ + 0, 1, 0, /* char 243 */ \ + 0, 1, 0, /* char 244 */ \ + 0, 1, 0, /* char 245 */ \ + 0, 1, 0, /* char 246 */ \ + 0, 1, 0, /* char 247 */ \ + 0, 1, 0, /* char 248 */ \ + 0, 1, 0, /* char 249 */ \ + 0, 1, 0, /* char 250 */ \ + 0, 1, 0, /* char 251 */ \ + 0, 1, 0, /* char 252 */ \ + 0, 1, 0, /* char 253 */ \ + 0, 1, 0, /* char 254 */ \ + 0, 1, 0, /* char 255 */ \ + 226) diff --git a/interface/skin.dmf b/interface/skin.dmf index d0ebe3066c7..ede8e376840 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -116,7 +116,7 @@ window "mapwindow" is-default = true right-click = true saved-params = "zoom;letterbox;zoom-mode" - style = ".center { text-align: center; } .maptext { font-family: 'Grand9K Pixel'; font-size: 6pt; -dm-text-outline: 1px black; color: white; line-height: 1.0; } .command_headset { font-weight: bold; } .small { font-family: 'TinyUnicode'; font-size: 12pt; line-height: 0.75; } .big { font-size: 8pt; } .reallybig { font-size: 8pt; } .extremelybig { font-size: 8pt; } .greentext { color: #00FF00; font-size: 6pt; } .redtext { color: #FF0000; font-size: 6pt; } .clown { color: #FF69BF; font-weight: bold; } .his_grace { color: #15D512; } .hypnophrase { color: #0d0d0d; font-weight: bold; } .yell { font-weight: bold; } .italics { font-family: 'TinyUnicode'; font-size: 12pt; line-height: 0.75; }" + style = ".center { text-align: center; } .maptext { font-family: 'Grand9K Pixel'; font-size: 6pt; -dm-text-outline: 1px black; color: white; line-height: 1.0; } .command_headset { font-weight: bold; } .context { font-family: 'Pixellari'; font-size: 12pt; -dm-text-outline: 1px black; } .subcontext { font-family: 'TinyUnicode'; font-size: 12pt; line-height: 0.75; } .small { font-family: 'Spess Font'; font-size: 6pt; line-height: 1.4; } .big { font-family: 'Pixellari'; font-size: 12pt; } .reallybig { font-size: 12pt; } .extremelybig { font-size: 12pt; } .greentext { color: #00FF00; font-size: 6pt; } .redtext { color: #FF0000; font-size: 6pt; } .clown { color: #FF69BF; font-weight: bold; } .his_grace { color: #15D512; } .hypnophrase { color: #0d0d0d; font-weight: bold; } .yell { font-weight: bold; } .italics { font-family: 'Spess Font'; font-size: 6pt; line-height: 1.4; }" elem "status_bar" type = LABEL pos = 0,464 diff --git a/tgstation.dme b/tgstation.dme index 067758fe62f..9d27b9ba841 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -5380,6 +5380,8 @@ #include "interface\stylesheet.dm" #include "interface\fonts\fonts_datum.dm" #include "interface\fonts\grand_9k.dm" +#include "interface\fonts\pixellari.dm" +#include "interface\fonts\spess_font.dm" #include "interface\fonts\tiny_unicode.dm" #include "interface\fonts\vcr_osd_mono.dm" // END_INCLUDE