blob: 5c32324f9b5c1f09ab44ce6d7bab84096440a6dc [file] [log] [blame] [raw]
package li.cil.oc.util
import java.io.IOException
import li.cil.oc.OpenComputers
object FontUtils {
// Note: we load the widths from a file (one byte per width) because the Scala
// compiler craps its pants when we try to have it as an array in the source
// file... seems having an array with 0x10000 entries leads to stack overflows,
// who would have known!
private val widths = {
val ba = Array.fill[Byte](0x10000)(-1)
// Note to self: NOT VIA THE FUCKING RESOURCE SYSTEM BECAUSE IT'S FUCKING CLIENT ONLY YOU IDIOT.
val is = FontUtils.getClass.getResourceAsStream("/assets/opencomputers/wcwidth.bin")
if (is != null) {
try {
is.read(ba)
is.close()
} catch {
case e: IOException => OpenComputers.log.warn("Failed loading character widths. Font rendering will probably be derpy as all hell.", e)
}
}
ba
}
def wcwidth(ch: Int) = if (ch < 0 || ch >= widths.length) -1 else widths(ch)
}