[MIRROR] Maptext 2023: I can see clearly now [MDB IGNORE] (#22100)

* Maptext 2023: I can see clearly now

* skyrat edit

* Update tgstation.dme

---------

Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com>
This commit is contained in:
SkyratBot
2023-06-27 21:05:25 -07:00
committed by GitHub
co-authored by lessthanthree
parent 43a452c49f
commit 85faba1a0f
19 changed files with 675 additions and 88 deletions
+8
View File
@@ -14,3 +14,11 @@
/// Emoji icon set
#define EMOJI_SET 'modular_skyrat/master_files/icons/emoji.dmi' // SKYRAT EDIT - ORIGINAL: 'icons/ui_icons/emoji/emoji.dmi'
// Font metrics bitfield
/// Include leading A width and trailing C width in GetWidth() or in DrawText()
#define INCLUDE_AC (1<<0)
DEFINE_BITFIELD(font_flags, list(
"INCLUDE_AC" = INCLUDE_AC,
))
+10 -1
View File
@@ -4,9 +4,18 @@
/// Prepares a text to be used for maptext. Use this so it doesn't look hideous.
#define MAPTEXT(text) {"<span class='maptext'>[##text]</span>"}
/// Prepares a text to be used for maptext, using a font that can handle larger text better.
/// 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) {"<span style='font-family: \"VCR OSD Mono\"'>[##text]</span>"}
/// 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) {"<span style='font-family: \"Grand9K Pixel\"'>[##text]</span>"}
/// 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) {"<span style='font-family: \"TinyUnicode\"'>[##text]</span>"}
/// 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) \
+6 -2
View File
@@ -13,7 +13,7 @@
/// Approximate height in pixels of an 'average' line, used for height decay
#define CHAT_MESSAGE_APPROX_LHEIGHT 11
/// Max width of chat message in pixels
#define CHAT_MESSAGE_WIDTH 96
#define CHAT_MESSAGE_WIDTH 112
/// The dimensions of the chat message icons
#define CHAT_MESSAGE_ICON_SIZE 9
@@ -145,6 +145,10 @@
if (!ismob(target))
extra_classes |= "small"
// Why are you yelling?
if(copytext_char(text, -2) == "!!")
extra_classes |= SPAN_YELL
var/list/prefixes
// Append radio icon if from a virtual speaker
@@ -171,7 +175,7 @@
var/tgt_color = extra_classes.Find("italics") ? target.chat_color_darkened : target.chat_color
// Approximate text height
var/complete_text = "<span class='center [extra_classes.Join(" ")]' style='color: [tgt_color]'>[owner.say_emphasis(text)]</span>"
var/complete_text = "<span style='color: [tgt_color]'><span class='center [extra_classes.Join(" ")]'>[owner.say_emphasis(text)]</span></span>"
var/mheight
WXH_TO_HEIGHT(owned_by.MeasureText(complete_text, null, CHAT_MESSAGE_WIDTH), mheight)
+5 -5
View File
@@ -2064,7 +2064,7 @@
active_hud.screentip_text.maptext = ""
return
active_hud.screentip_text.maptext_y = 0
active_hud.screentip_text.maptext_y = 16 // 16px 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 = ""
@@ -2131,15 +2131,15 @@
extra_lines++
if(extra_lines)
extra_context = "<br><span style='font-size: 7px'>[lmb_rmb_line][ctrl_lmb_ctrl_rmb_line][alt_lmb_alt_rmb_line][shift_lmb_ctrl_shift_lmb_line]</span>"
//first extra line pushes atom name line up 10px, subsequent lines push it up 9px, this offsets that and keeps the first line in the same place
active_hud.screentip_text.maptext_y = -10 + (extra_lines - 1) * -9
extra_context = "<br><span class='small'>[lmb_rmb_line][ctrl_lmb_ctrl_rmb_line][alt_lmb_alt_rmb_line][shift_lmb_ctrl_shift_lmb_line]</span>"
//first extra line pushes atom name line up 11px, subsequent lines push it up 8px, this offsets that and keeps the first line in the same place
active_hud.screentip_text.maptext_y = 5 + (extra_lines - 1) * -8
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 = "<span class='maptext' style='text-align: center; font-size: 32px; color: [active_hud.screentip_color]'>[name][extra_context]</span>"
active_hud.screentip_text.maptext = "<span class='maptext' style='text-align: center; font-size: 6pt; color: [active_hud.screentip_color]'>[name][extra_context]</span>"
/// Gets a merger datum representing the connected blob of objects in the allowed_types argument
/atom/proc/GetMergeGroup(id, list/allowed_types)
+37 -59
View File
@@ -1,11 +1,15 @@
// Status display
// (formerly Countdown timer display)
#define MAX_STATIC_WIDTH 25
#define FONT_STYLE "5pt 'Small Fonts'"
#define MAX_STATIC_WIDTH 22
#define FONT_STYLE "12pt 'TinyUnicode'"
#define SCROLL_RATE (0.04 SECONDS) // time per pixel
#define LINE1_Y -7 // SKYRAT EDIT CHANGE - AESTHETICS - originally -8
#define LINE2_Y -14 // SKYRAT EDIT CHANGE - AESTHETICS - originally -15
#define SCROLL_PADDING 2 // how many pixels we chop to make a smooth loop
#define LINE1_X 1
#define LINE1_Y -4
#define LINE2_X 1
#define LINE2_Y -11
#define STATUS_DISPLAY_FONT_DATUM /datum/font/tiny_unicode/size_12pt
/// Status display which can show images and scrolling text.
/obj/machinery/status_display
name = "status display"
@@ -124,14 +128,14 @@
* * message - the new message text.
* Returns new /obj/effect/overlay/status_display_text or null if unchanged.
*/
/obj/machinery/status_display/proc/update_message(obj/effect/overlay/status_display_text/overlay, line_y, message, x_offset)
/obj/machinery/status_display/proc/update_message(obj/effect/overlay/status_display_text/overlay, line_y, message, x_offset, line_pair)
if(overlay && message == overlay.message)
return null
if(overlay)
qdel(overlay)
var/obj/effect/overlay/status_display_text/new_status_display_text = new(src, line_y, message, text_color, header_text_color, x_offset)
var/obj/effect/overlay/status_display_text/new_status_display_text = new(src, line_y, message, text_color, header_text_color, x_offset, line_pair)
// Draw our object visually "in front" of this display, taking advantage of sidemap
new_status_display_text.pixel_y = -32
new_status_display_text.pixel_z = 32
@@ -149,7 +153,7 @@
return
set_light(1.5, 0.7, LIGHT_COLOR_BLUE) // blue light
/obj/machinery/status_display/update_overlays()
/obj/machinery/status_display/update_overlays(updates)
. = ..()
if(machine_stat & (NOPOWER|BROKEN))
@@ -167,10 +171,18 @@
if(current_picture == AI_DISPLAY_DONT_GLOW) // If the thing's off, don't display the emissive yeah?
return .
else
var/overlay = update_message(message1_overlay, LINE1_Y, message1)
var/line1_metric
var/line2_metric
var/line_pair
var/datum/font/display_font = new STATUS_DISPLAY_FONT_DATUM()
line1_metric = display_font.get_metrics(message1)
line2_metric = display_font.get_metrics(message2)
line_pair = (line1_metric > line2_metric ? line1_metric : line2_metric)
var/overlay = update_message(message1_overlay, LINE1_Y, message1, LINE1_X, line_pair)
if(overlay)
message1_overlay = overlay
overlay = update_message(message2_overlay, LINE2_Y, message2)
overlay = update_message(message2_overlay, LINE2_Y, message2, LINE2_X, line_pair)
if(overlay)
message2_overlay = overlay
@@ -178,7 +190,7 @@
if(message1 == "" && message2 == "")
return
. += emissive_appearance(icon, "outline", src, alpha = src.alpha)
. += emissive_appearance('modular_skyrat/modules/aesthetics/status_display/icons/status_display.dmi', "outline", src, alpha = src.alpha) // SKYRAT EDIT CHANGE - AESTHETICS
// Timed process - performs nothing in the base class
/obj/machinery/status_display/process()
@@ -245,39 +257,23 @@
// If the line is short enough to not marquee, and it matches this, it's a header.
var/static/regex/header_regex = regex("^-.*-$")
/// Width of each character, including kerning gap afterwards.
/// We don't use rich text or anything fancy, so we can bake these values.
var/static/list/char_widths = list(
// ! " # $ % & ' ( ) * + , - . /
1, 2, 3, 5, 4, 5, 5, 2, 3, 3, 3, 4, 2, 3, 2, 3,
// 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 3, 3, 3, 3,
// @ A B C D E F G H I J K L M N O
7, 5, 5, 5, 5, 4, 4, 5, 5, 2, 4, 5, 4, 6, 5, 5,
// P Q R S T U V W X Y Z [ \ ] ^ _
5, 5, 5, 5, 4, 5, 4, 6, 4, 4, 4, 3, 3, 3, 4, 4,
// ` a b c d e f g h i j k l m n o
3, 5, 5, 5, 5, 4, 4, 5, 5, 2, 4, 5, 4, 6, 5, 5,
// p q r s t u v w x y z { | } ~
5, 5, 5, 5, 4, 5, 4, 6, 4, 4, 4, 3, 2, 3, 4,
)
/obj/effect/overlay/status_display_text/Initialize(mapload, yoffset, line, text_color, header_text_color, xoffset = 0)
/obj/effect/overlay/status_display_text/Initialize(mapload, yoffset, line, text_color, header_text_color, xoffset = 0, line_pair)
. = ..()
maptext_y = yoffset
message = line
var/line_width = measure_width(line)
var/datum/font/display_font = new STATUS_DISPLAY_FONT_DATUM()
var/line_width = display_font.get_metrics(line)
if(line_width > MAX_STATIC_WIDTH)
// Marquee text
var/marquee_message = "[line] - [line] - [line]"
var/marquee_message = "[line] [line] [line]"
// Width of full content. Must of these is never revealed unless the user inputted a single character.
var/full_marquee_width = measure_width(marquee_message)
var/full_marquee_width = display_font.get_metrics("[marquee_message] ")
// We loop after only this much has passed.
var/looping_marquee_width = measure_width("[line] - ")
var/looping_marquee_width = (display_font.get_metrics("[line] ]") - SCROLL_PADDING)
maptext = generate_text(marquee_message, center = FALSE, text_color = text_color)
maptext_width = full_marquee_width
@@ -287,45 +283,24 @@
add_filter("mask", 1, alpha_mask_filter(icon = icon(icon, "outline")))
// Scroll.
var/time = looping_marquee_width * SCROLL_RATE
animate(src, maptext_x = -looping_marquee_width, time = time, loop = -1)
animate(maptext_x = 0, time = 0)
var/time = line_pair * SCROLL_RATE
animate(src, maptext_x = (-looping_marquee_width) + MAX_STATIC_WIDTH, time = time, loop = -1)
animate(maptext_x = MAX_STATIC_WIDTH, time = 0)
else
// Centered text
var/color = header_regex.Find(line) ? header_text_color : text_color
maptext = generate_text(line, center = TRUE, text_color = color)
maptext_x = xoffset //Defaults to 0, this would be centered unless overided
/**
* A hyper-streamlined version of MeasureText that doesn't support different fonts, rich formatting, or multiline.
* But it also doesn't require a client.
*
* Returns the width in pixels
*
* Arguments:
* * text - the text to measure
*/
/obj/effect/overlay/status_display_text/proc/measure_width(text)
var/width = 0
for(var/text_idx in 1 to length(text))
var/ascii = text2ascii(text, text_idx)
if(!(ascii in 0x20 to 0x7E))
// So we can't possibly runtime, even though the input should be in range already.
width += 3
continue
width += char_widths[ascii - 0x1F]
return width
/**
* Generate the actual maptext.
* Arguments:
* * text - the text to display
* * center - center the text if TRUE, otherwise left-align
* * center - center the text if TRUE, otherwise right-align (the direction the text is coming from)
* * text_color - the text color
*/
/obj/effect/overlay/status_display_text/proc/generate_text(text, center, text_color)
return {"<div style="color:[text_color];font:[FONT_STYLE][center ? ";text-align:center" : ""]" valign="top">[text]</div>"}
return {"<div style="color:[text_color];font:[FONT_STYLE][center ? ";text-align:center" : "text-align:right"]" valign="top">[text]</div>"}
/// Evac display which shows shuttle timer or message set by Command.
/obj/machinery/status_display/evac
@@ -576,5 +551,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/status_display/ai, 32)
#undef MAX_STATIC_WIDTH
#undef FONT_STYLE
#undef SCROLL_RATE
#undef LINE1_X
#undef LINE1_Y
#undef LINE2_X
#undef LINE2_Y
#undef STATUS_DISPLAY_FONT_DATUM
@@ -19,10 +19,10 @@
light_color = LIGHT_COLOR_DARK_BLUE
luminosity = 1
maptext_x = 17
maptext_y = 21
maptext_width = 4
maptext_height = 8
maptext_x = 18
maptext_y = 20
maptext_width = 8
maptext_height = 16
/// What specific_lift_id do we link with?
var/linked_elevator_id
@@ -150,7 +150,7 @@
return
set_light(l_on = TRUE)
maptext = {"<div style="font:5pt 'Small Fonts';color:[LIGHT_COLOR_DARK_BLUE]">[current_lift_floor]</div>"}
maptext = MAPTEXT_TINY_UNICODE("<div style='font-size:12pt; color:[LIGHT_COLOR_DARK_BLUE]'>[current_lift_floor]</div>")
/obj/machinery/lift_indicator/update_overlays()
. = ..()
Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

-10
View File
@@ -1,10 +0,0 @@
/// A font datum, it exists to define a custom font to use in a span style later.
/datum/font
/// Font name, just so people know what to put in their span style.
var/name
/// The font file we link to.
var/font_family
/datum/font/vcr_osd_mono
name = "VCR OSD Mono"
font_family = 'interface/VCR_OSD_Mono.ttf'
Binary file not shown.
Binary file not shown.
+78
View File
@@ -0,0 +1,78 @@
/// A font datum, it exists to define a custom font to use in a span style later.
/datum/font
/// Font name, just so people know what to put in their span style.
var/name
/// The font file we link to.
var/font_family
/// Font features and metrics
/// Generated by 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
/// list of font size/spacing metrics
var/list/metrics
/// total height of a line
var/height
/// distance above baseline (including whitespace)
var/ascent
/// distance below baseline
var/descent
/// average character width
var/average_width
/// maximum character width
var/max_width
/// extra width, such as from italics, for a line
var/overhang
/// internal leading vertical space, for accent marks
var/in_leading
/// external leading vertical space, just plain blank
var/ex_leading
/// default character (for undefined chars)
var/default_character
/// first character in metrics
var/start
/// last character in metrics
var/end
/// Get font metrics
/// From Lummox's dmifontsplus (https://www.byond.com/developer/LummoxJR/DmiFontsPlus)
/datum/font/proc/get_metrics(text, flags, first_line)
. = 0
var/longest = 0
if(!length(text))
return
var/i = 1
var/idx
while(i <= length(text))
var/character = text2ascii(text, i++)
if(character <= 10)
if(character <= 7)
. += character // spacers for justification
if(character <= 9)
continue // soft-break chars
if(. && idx && !(flags & INCLUDE_AC))
. -= max(metrics[idx + 3], 0)
longest = max(longest, . + first_line)
. = 0
first_line = 0
idx = 0
continue
idx = (character - start) * 3
if(idx <= 0 || idx >= metrics.len)
idx = (default_character - start) * 3
if(!. && !(flags & INCLUDE_AC))
. -= metrics[idx + 1]
. += metrics[idx + 1] + metrics[idx + 2] + metrics[idx +3]
if(. && idx && !(flags & INCLUDE_AC))
. -= max(metrics[idx + 3], 0)
. = max(. + first_line, longest)
if(. > 0)
. += overhang
+253
View File
@@ -0,0 +1,253 @@
/// For clean results on map, use only sizing pt, multiples of 6: 6pt 12pt 18pt 24pt etc. - Not for use with px sizing
/// Can be used in TGUI etc, px sizing is pt / 0.75. 6pt = 8px, 12pt = 16px etc.
/// Base font
/datum/font/grand9k
name = "Grand9K Pixel"
font_family = 'interface/fonts/Grand9K_Pixel.ttf'
/// For icon overlays
/// Grand9K 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/grand9k/size_6pt
name = "Grand9K Pixel 6pt"
height = 12
ascent = 10
descent = 2
average_width = 4
max_width = 9
overhang = 0
in_leading = 4
ex_leading = 1
default_character = 31
start = 30
end = 255
metrics = list(
0, 5, 1, // char 30
0, 5, 1, // char 31
0, 1, 1, // char 32
0, 1, 1, // char 33
0, 3, 1, // char 34
0, 6, 1, // char 35
0, 5, 1, // char 36
0, 7, 1, // char 37
0, 5, 1, // char 38
0, 1, 1, // char 39
0, 3, 1, // char 40
0, 3, 1, // char 41
0, 5, 1, // char 42
0, 5, 1, // char 43
0, 1, 1, // char 44
0, 4, 1, // char 45
0, 1, 1, // char 46
0, 3, 1, // char 47
0, 5, 1, // char 48
0, 2, 1, // char 49
0, 5, 1, // char 50
0, 4, 1, // char 51
0, 5, 1, // char 52
0, 5, 1, // char 53
0, 5, 1, // char 54
0, 5, 1, // char 55
0, 5, 1, // char 56
0, 5, 1, // char 57
0, 1, 1, // char 58
0, 1, 1, // char 59
0, 4, 1, // char 60
0, 4, 1, // char 61
0, 4, 1, // char 62
0, 4, 1, // char 63
0, 7, 1, // char 64
0, 5, 1, // char 65
0, 5, 1, // char 66
0, 4, 1, // char 67
0, 5, 1, // char 68
0, 4, 1, // char 69
0, 4, 1, // char 70
0, 5, 1, // char 71
0, 5, 1, // char 72
0, 1, 1, // char 73
0, 5, 1, // char 74
0, 5, 1, // char 75
0, 5, 1, // char 76
0, 5, 1, // char 77
0, 5, 1, // char 78
0, 5, 1, // char 79
0, 5, 1, // char 80
0, 6, 1, // char 81
0, 5, 1, // char 82
0, 5, 1, // char 83
0, 5, 1, // char 84
0, 5, 1, // char 85
0, 5, 1, // char 86
0, 5, 1, // char 87
0, 5, 1, // char 88
0, 5, 1, // char 89
0, 5, 1, // char 90
0, 3, 1, // char 91
0, 3, 1, // char 92
0, 3, 1, // char 93
0, 5, 1, // char 94
0, 4, 0, // char 95
0, 2, 1, // char 96
0, 4, 1, // char 97
0, 4, 1, // char 98
0, 3, 1, // char 99
0, 4, 1, // char 100
0, 4, 1, // char 101
0, 4, 1, // char 102
0, 4, 1, // char 103
0, 4, 1, // char 104
0, 1, 1, // char 105
0, 3, 1, // char 106
0, 4, 1, // char 107
0, 1, 1, // char 108
0, 5, 1, // char 109
0, 4, 1, // char 110
0, 4, 1, // char 111
0, 4, 1, // char 112
0, 4, 1, // char 113
0, 4, 1, // char 114
0, 4, 1, // char 115
0, 4, 1, // char 116
0, 4, 1, // char 117
0, 5, 1, // char 118
0, 5, 1, // char 119
0, 5, 1, // char 120
0, 4, 1, // char 121
0, 5, 1, // char 122
0, 4, 1, // char 123
0, 1, 1, // char 124
0, 4, 1, // char 125
0, 6, 1, // char 126
0, 5, 1, // char 127
0, 5, 1, // char 128
0, 5, 1, // char 129
0, 1, 1, // char 130
0, 5, 1, // char 131
0, 3, 1, // char 132
0, 5, 1, // char 133
0, 5, 1, // char 134
0, 5, 1, // char 135
0, 5, 1, // char 136
0, 5, 1, // char 137
0, 5, 1, // char 138
0, 3, 1, // char 139
0, 6, 1, // char 140
0, 5, 1, // char 141
0, 5, 1, // char 142
0, 5, 1, // char 143
0, 5, 1, // char 144
0, 1, 1, // char 145
0, 1, 1, // char 146
0, 3, 1, // char 147
0, 3, 1, // char 148
0, 1, 1, // char 149
0, 5, 1, // char 150
0, 5, 1, // char 151
0, 5, 1, // char 152
0, 8, 1, // char 153
0, 4, 1, // char 154
0, 3, 1, // char 155
0, 5, 1, // char 156
0, 5, 1, // char 157
0, 5, 1, // char 158
0, 5, 1, // char 159
0, 1, 1, // char 160
0, 1, 1, // char 161
0, 4, 1, // char 162
0, 5, 1, // char 163
0, 5, 1, // char 164
0, 5, 1, // char 165
0, 1, 1, // char 166
0, 5, 1, // char 167
0, 3, 1, // char 168
0, 8, 1, // char 169
0, 5, 1, // char 170
0, 6, 1, // char 171
0, 4, 1, // char 172
0, 5, 1, // char 173
0, 8, 1, // char 174
0, 5, 1, // char 175
0, 3, 1, // char 176
0, 5, 1, // char 177
0, 5, 1, // char 178
0, 5, 1, // char 179
0, 2, 1, // char 180
0, 4, 1, // char 181
0, 5, 1, // char 182
0, 1, 1, // char 183
0, 2, 1, // char 184
0, 5, 1, // char 185
0, 5, 1, // char 186
0, 6, 1, // char 187
0, 5, 1, // char 188
0, 5, 1, // char 189
0, 5, 1, // char 190
0, 4, 1, // char 191
0, 5, 1, // char 192
0, 5, 1, // char 193
0, 5, 1, // char 194
0, 6, 0, // char 195
0, 5, 1, // char 196
0, 5, 1, // char 197
0, 6, 1, // char 198
0, 4, 1, // char 199
0, 4, 1, // char 200
0, 4, 1, // char 201
0, 4, 1, // char 202
0, 4, 1, // char 203
1, 2, 0, // char 204
0, 2, 1, // char 205
0, 3, 0, // char 206
0, 3, 0, // char 207
0, 6, 1, // char 208
0, 6, 0, // char 209
0, 5, 1, // char 210
0, 5, 1, // char 211
0, 5, 1, // char 212
0, 6, 1, // char 213
0, 5, 1, // char 214
0, 5, 1, // char 215
0, 5, 1, // char 216
0, 5, 1, // char 217
0, 5, 1, // char 218
0, 5, 1, // char 219
0, 5, 1, // char 220
0, 5, 1, // char 221
0, 5, 1, // char 222
0, 5, 1, // char 223
0, 4, 1, // char 224
0, 4, 1, // char 225
0, 4, 1, // char 226
0, 4, 1, // char 227
0, 4, 1, // char 228
0, 4, 1, // char 229
0, 5, 1, // char 230
0, 3, 1, // char 231
0, 4, 1, // char 232
0, 4, 1, // char 233
0, 4, 1, // char 234
0, 4, 1, // char 235
0, 2, 1, // char 236
1, 2, 0, // char 237
0, 3, 0, // char 238
0, 3, 0, // char 239
0, 5, 0, // char 240
0, 4, 1, // char 241
0, 4, 1, // char 242
0, 4, 1, // char 243
0, 4, 1, // char 244
0, 4, 1, // char 245
0, 4, 1, // char 246
0, 5, 1, // char 247
0, 4, 1, // char 248
0, 4, 1, // char 249
0, 4, 1, // char 250
0, 4, 1, // char 251
0, 4, 1, // char 252
0, 4, 1, // char 253
0, 4, 1, // char 254
0, 4, 1, // char 255
226
)
+8
View File
@@ -0,0 +1,8 @@
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)
Tiny Unicode created by Jakob Riedle/DuffsDevice. Website indicates free for commercial use.
(https://fontmeme.com/fonts/tiny-unicode-font/)
+253
View File
@@ -0,0 +1,253 @@
/// 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/tiny_unicode
name = "TinyUnicode"
font_family = 'interface/fonts/TinyUnicode.ttf'
/// For icon overlays
/// TinyUnicode 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/tiny_unicode/size_12pt
name = "TinyUnicode 12pt"
height = 13
ascent = 11
descent = 2
average_width = 5
max_width = 11
overhang = 0
in_leading = -3
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
0, 1, 1, // char 33
0, 3, 1, // char 34
0, 5, 1, // char 35
0, 4, 1, // char 36
0, 3, 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, 2, 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, 2, 1, // char 59
0, 2, 1, // char 60
0, 4, 1, // char 61
0, 2, 1, // char 62
0, 4, 1, // char 63
0, 7, 1, // char 64
0, 4, 1, // char 65
0, 4, 1, // char 66
0, 3, 1, // char 67
0, 4, 1, // char 68
0, 3, 1, // char 69
0, 3, 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, 3, 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, 3, 1, // char 84
0, 4, 1, // char 85
0, 4, 1, // char 86
0, 5, 1, // char 87
0, 4, 1, // char 88
0, 4, 1, // char 89
0, 3, 1, // char 90
0, 2, 1, // char 91
0, 3, 1, // char 92
0, 2, 1, // char 93
0, 3, 1, // char 94
0, 5, 1, // char 95
0, 2, 1, // char 96
0, 4, 1, // char 97
0, 4, 1, // char 98
0, 3, 1, // char 99
0, 4, 1, // char 100
0, 4, 1, // char 101
0, 3, 1, // char 102
0, 4, 1, // char 103
0, 4, 1, // char 104
0, 1, 1, // char 105
0, 2, 1, // char 106
0, 4, 1, // char 107
0, 1, 1, // char 108
0, 5, 1, // char 109
0, 4, 1, // char 110
0, 4, 1, // char 111
0, 4, 1, // char 112
0, 4, 1, // char 113
0, 3, 1, // char 114
0, 4, 1, // char 115
0, 3, 1, // char 116
0, 4, 1, // char 117
0, 4, 1, // char 118
0, 5, 1, // char 119
0, 3, 1, // char 120
0, 4, 1, // char 121
0, 4, 1, // char 122
0, 3, 1, // char 123
0, 1, 1, // char 124
0, 3, 1, // char 125
0, 5, 1, // char 126
1, 5, 0, // char 127
0, 4, 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
0, 5, 1, // char 137
1, 5, 0, // char 138
1, 5, 0, // char 139
0, 6, 1, // char 140
1, 5, 0, // char 141
1, 5, 0, // 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
0, 2, 1, // char 149
1, 5, 0, // char 150
1, 5, 0, // char 151
1, 5, 0, // char 152
0, 4, 1, // char 153
1, 5, 0, // char 154
1, 5, 0, // char 155
1, 5, 0, // char 156
1, 5, 0, // char 157
1, 5, 0, // char 158
0, 4, 1, // char 159
1, 5, 0, // char 160
0, 1, 1, // char 161
0, 4, 1, // char 162
0, 4, 1, // char 163
0, 5, 1, // char 164
0, 3, 1, // char 165
0, 1, 1, // char 166
0, 4, 1, // char 167
0, 3, 1, // char 168
0, 2, 1, // char 169
0, 8, 1, // char 170
0, 4, 1, // char 171
0, 4, 1, // char 172
1, 5, 0, // char 173
0, 2, 1, // char 174
0, 4, 1, // char 175
0, 3, 1, // char 176
0, 3, 1, // char 177
0, 2, 1, // char 178
0, 2, 1, // char 179
0, 2, 1, // char 180
0, 4, 1, // char 181
0, 5, 1, // char 182
1, 1, 1, // char 183
0, 8, 1, // char 184
0, 2, 1, // char 185
0, 2, 1, // char 186
0, 4, 1, // char 187
0, 7, 1, // char 188
0, 8, 1, // char 189
0, 8, 1, // char 190
0, 4, 1, // char 191
0, 4, 1, // char 192
0, 4, 1, // char 193
0, 4, 1, // char 194
0, 4, 1, // char 195
0, 4, 1, // char 196
0, 4, 1, // char 197
0, 6, 1, // char 198
0, 3, 1, // char 199
0, 3, 1, // char 200
0, 3, 1, // char 201
0, 3, 1, // char 202
0, 3, 1, // char 203
0, 3, 1, // char 204
0, 3, 1, // char 205
0, 3, 1, // char 206
0, 3, 1, // char 207
0, 10, 1, // char 208
0, 4, 1, // char 209
0, 4, 1, // char 210
0, 4, 1, // char 211
0, 4, 1, // char 212
0, 4, 1, // char 213
0, 4, 1, // char 214
0, 3, 1, // char 215
0, 5, 1, // char 216
0, 4, 1, // char 217
0, 4, 1, // char 218
0, 4, 1, // char 219
0, 4, 1, // char 220
0, 4, 1, // char 221
0, 3, 1, // char 222
0, 3, 1, // char 223
0, 4, 1, // char 224
0, 4, 1, // char 225
0, 4, 1, // char 226
0, 4, 1, // char 227
0, 4, 1, // char 228
0, 4, 1, // char 229
0, 7, 1, // char 230
0, 3, 1, // char 231
0, 4, 1, // char 232
0, 4, 1, // char 233
0, 4, 1, // char 234
0, 4, 1, // char 235
0, 2, 1, // char 236
0, 2, 1, // char 237
0, 3, 1, // char 238
0, 3, 1, // char 239
0, 5, 1, // char 240
0, 4, 1, // char 241
0, 4, 1, // char 242
0, 4, 1, // char 243
0, 4, 1, // char 244
0, 4, 1, // char 245
0, 4, 1, // char 246
0, 5, 1, // char 247
0, 4, 1, // char 248
0, 4, 1, // char 249
0, 4, 1, // char 250
0, 4, 1, // char 251
0, 4, 1, // char 252
0, 4, 1, // char 253
0, 10, 1, // char 254
0, 4, 1, // char 255
226
)
+3
View File
@@ -0,0 +1,3 @@
/datum/font/vcr_osd_mono
name = "VCR OSD Mono"
font_family = 'interface/fonts/VCR_OSD_Mono.ttf'
-2
View File
@@ -1,2 +0,0 @@
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)
+4 -3
View File
@@ -111,12 +111,12 @@ window "mapwindow"
size = 640x480
anchor1 = 0,0
anchor2 = 100,100
font-family = "Arial"
font-size = 7
font-family = "Grand9K Pixel"
font-size = 6pt
is-default = true
right-click = true
saved-params = "zoom;letterbox;zoom-mode"
style = ".center { text-align: center; } .maptext { font-family: 'Small Fonts'; font-size: 7px; -dm-text-outline: 1px black; color: white; line-height: 1.1; } .command_headset { font-weight: bold;\tfont-size: 8px; } .small { font-size: 6px; } .big { font-size: 8px; } .reallybig { font-size: 8px; } .extremelybig { font-size: 8px; } .greentext { color: #00FF00; font-size: 7px; } .redtext { color: #FF0000; font-size: 7px; } .clown { color: #FF69Bf; font-size: 7px; font-weight: bold; } .his_grace { color: #15D512; } .hypnophrase { color: #0d0d0d; font-weight: bold; } .yell { font-weight: bold; } .italics { font-size: 6px; }"
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; }"
elem "title_browser"
type = BROWSER
pos = 0,0
@@ -128,6 +128,7 @@ window "mapwindow"
is-disabled = true
saved-params = ""
auto-format = false
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; }"
elem "status_bar"
type = LABEL
pos = 0,464
+5 -1
View File
@@ -1,6 +1,7 @@
// DM Environment file for tgstation.dme.
// All manual changes should be made outside the BEGIN_ and END_ blocks.
// New source code should be placed in .dm files: choose File/New --> Code File.
// interface\skin.dmf needs to be at the very end of the file.
// BEGIN_INTERNALS
// END_INTERNALS
@@ -5430,10 +5431,13 @@
#include "code\modules\zombie\items.dm"
#include "code\modules\zombie\organs.dm"
#include "code\ze_genesis_call\genesis_call.dm"
#include "interface\fonts.dm"
#include "interface\interface.dm"
#include "interface\menu.dm"
#include "interface\stylesheet.dm"
#include "interface\fonts\fonts_datum.dm"
#include "interface\fonts\grand_9k.dm"
#include "interface\fonts\tiny_unicode.dm"
#include "interface\fonts\vcr_osd_mono.dm"
#include "interface\skin.dmf"
#include "modular_skyrat\master_files\code\_globalvars\configuration.dm"
#include "modular_skyrat\master_files\code\_globalvars\religion.dm"