upgrade rusttype to 0.9.2
Signed-off-by: Sean Cross <sean@xobs.io>
This commit is contained in:
parent
476a565ae5
commit
324669af0c
645
Cargo.lock
generated
645
Cargo.lock
generated
@ -1,19 +1,15 @@
|
|||||||
# This file is automatically @generated by Cargo.
|
# This file is automatically @generated by Cargo.
|
||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
[[package]]
|
version = 3
|
||||||
name = "approx"
|
|
||||||
version = "0.3.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f0e60b75072ecd4168020818c0107f2857bb6c4e64252d8d3983f6263b40a5c3"
|
|
||||||
dependencies = [
|
|
||||||
"num-traits",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "arrayvec"
|
name = "ab_glyph_rasterizer"
|
||||||
version = "0.5.1"
|
version = "0.1.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8"
|
checksum = "d9fe5e32de01730eb1f6b7f5b51c17e03e2325bf40a74f754f04f130043affff"
|
||||||
|
dependencies = [
|
||||||
|
"libm",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "autocfg"
|
name = "autocfg"
|
||||||
@ -28,10 +24,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
|
checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "byteorder"
|
name = "cast"
|
||||||
version = "1.3.2"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
|
checksum = "4b9434b9a5aa1450faa3f9cb14ea0e8c53bb5d2b3c1bfd1ab4fc03e9f33fbfb0"
|
||||||
|
dependencies = [
|
||||||
|
"rustc_version",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
@ -42,6 +41,59 @@ dependencies = [
|
|||||||
"jobserver",
|
"jobserver",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cfg-if"
|
||||||
|
version = "0.1.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cfg-if"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cloudabi"
|
||||||
|
version = "0.0.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "dlib"
|
||||||
|
version = "0.4.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b11f15d1e3268f140f68d390637d5e76d849782d971ae7063e0da69fe9709a76"
|
||||||
|
dependencies = [
|
||||||
|
"libloading",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "downcast-rs"
|
||||||
|
version = "1.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fuchsia-cprng"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "getrandom"
|
||||||
|
version = "0.1.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if 0.1.10",
|
||||||
|
"libc",
|
||||||
|
"wasi",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jobserver"
|
name = "jobserver"
|
||||||
version = "0.1.21"
|
version = "0.1.21"
|
||||||
@ -51,6 +103,12 @@ dependencies = [
|
|||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lazy_static"
|
||||||
|
version = "1.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.80"
|
version = "0.2.80"
|
||||||
@ -58,10 +116,91 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "4d58d1b70b004888f764dfbf6a26a3b0342a1632d33968e4a179d8011c760614"
|
checksum = "4d58d1b70b004888f764dfbf6a26a3b0342a1632d33968e4a179d8011c760614"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libm"
|
name = "libloading"
|
||||||
version = "0.1.4"
|
version = "0.6.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a"
|
checksum = "1090080fe06ec2648d0da3881d9453d97e71a45f00eb179af7fdd7e3f686fdb0"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if 1.0.0",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libm"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "maybe-uninit"
|
||||||
|
version = "2.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "minifb"
|
||||||
|
version = "0.17.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0c2407444bc74256b6f2c6fe3d8cfe0af591f5680b501e751078a96992808aa0"
|
||||||
|
dependencies = [
|
||||||
|
"cast",
|
||||||
|
"cc",
|
||||||
|
"orbclient",
|
||||||
|
"raw-window-handle",
|
||||||
|
"tempfile",
|
||||||
|
"wayland-client",
|
||||||
|
"wayland-cursor",
|
||||||
|
"wayland-protocols",
|
||||||
|
"winapi",
|
||||||
|
"x11-dl",
|
||||||
|
"xkb",
|
||||||
|
"xkbcommon-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nix"
|
||||||
|
version = "0.17.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
"cc",
|
||||||
|
"cfg-if 0.1.10",
|
||||||
|
"libc",
|
||||||
|
"void",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num"
|
||||||
|
version = "0.1.42"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e"
|
||||||
|
dependencies = [
|
||||||
|
"num-integer",
|
||||||
|
"num-iter",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-integer"
|
||||||
|
version = "0.1.41"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-iter"
|
||||||
|
version = "0.1.39"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "76bd5272412d173d6bf9afdf98db8612bbabc9a7a830b7bfc9c188911716132e"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"num-integer",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-traits"
|
name = "num-traits"
|
||||||
@ -73,34 +212,268 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ordered-float"
|
name = "once_cell"
|
||||||
version = "1.0.2"
|
version = "1.5.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "18869315e81473c951eb56ad5558bbc56978562d3ecfb87abb7a1e944cea4518"
|
checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "orbclient"
|
||||||
|
version = "0.3.27"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f8b18f57ab94fbd058e30aa57f712ec423c0bb7403f8493a6c58eef0c36d9402"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"num-traits",
|
"redox_syscall",
|
||||||
|
"sdl2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "owned_ttf_parser"
|
||||||
|
version = "0.6.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9f923fb806c46266c02ab4a5b239735c144bdeda724a50ed058e5226f594cde3"
|
||||||
|
dependencies = [
|
||||||
|
"ttf-parser 0.6.2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pkg-config"
|
||||||
|
version = "0.3.19"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ppv-lite86"
|
||||||
|
version = "0.2.10"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro2"
|
||||||
|
version = "1.0.24"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-xid",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quote"
|
||||||
|
version = "1.0.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand"
|
||||||
|
version = "0.6.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"libc",
|
||||||
|
"rand_chacha 0.1.1",
|
||||||
|
"rand_core 0.4.2",
|
||||||
|
"rand_hc 0.1.0",
|
||||||
|
"rand_isaac",
|
||||||
|
"rand_jitter",
|
||||||
|
"rand_os",
|
||||||
|
"rand_pcg",
|
||||||
|
"rand_xorshift",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand"
|
||||||
|
version = "0.7.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
|
||||||
|
dependencies = [
|
||||||
|
"getrandom",
|
||||||
|
"libc",
|
||||||
|
"rand_chacha 0.2.2",
|
||||||
|
"rand_core 0.5.1",
|
||||||
|
"rand_hc 0.2.0",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_chacha"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"rand_core 0.3.1",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_chacha"
|
||||||
|
version = "0.2.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
|
||||||
|
dependencies = [
|
||||||
|
"ppv-lite86",
|
||||||
|
"rand_core 0.5.1",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_core"
|
||||||
|
version = "0.3.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
|
||||||
|
dependencies = [
|
||||||
|
"rand_core 0.4.2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_core"
|
||||||
|
version = "0.4.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_core"
|
||||||
|
version = "0.5.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
|
||||||
|
dependencies = [
|
||||||
|
"getrandom",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_hc"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
|
||||||
|
dependencies = [
|
||||||
|
"rand_core 0.3.1",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_hc"
|
||||||
|
version = "0.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
|
||||||
|
dependencies = [
|
||||||
|
"rand_core 0.5.1",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_isaac"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
|
||||||
|
dependencies = [
|
||||||
|
"rand_core 0.3.1",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_jitter"
|
||||||
|
version = "0.1.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"rand_core 0.4.2",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_os"
|
||||||
|
version = "0.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
|
||||||
|
dependencies = [
|
||||||
|
"cloudabi",
|
||||||
|
"fuchsia-cprng",
|
||||||
|
"libc",
|
||||||
|
"rand_core 0.4.2",
|
||||||
|
"rdrand",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_pcg"
|
||||||
|
version = "0.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"rand_core 0.4.2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_xorshift"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
|
||||||
|
dependencies = [
|
||||||
|
"rand_core 0.3.1",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "raw-window-handle"
|
||||||
|
version = "0.3.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0a441a7a6c80ad6473bd4b74ec1c9a4c951794285bf941c2126f607c72e48211"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rdrand"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
|
||||||
|
dependencies = [
|
||||||
|
"rand_core 0.3.1",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "redox_syscall"
|
||||||
|
version = "0.1.57"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "remove_dir_all"
|
||||||
|
version = "0.5.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
|
||||||
|
dependencies = [
|
||||||
|
"winapi",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rust-font-test"
|
name = "rust-font-test"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"minifb",
|
||||||
"rusttype",
|
"rusttype",
|
||||||
"rustybuzz",
|
"rustybuzz",
|
||||||
"stats_alloc",
|
"stats_alloc",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rusttype"
|
name = "rustc_version"
|
||||||
version = "0.8.1"
|
version = "0.2.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6fa38506b5cbf2fb67f915e2725cb5012f1b9a785b0ab55c4733acda5f6554ef"
|
checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"approx",
|
"semver",
|
||||||
"arrayvec",
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rusttype"
|
||||||
|
version = "0.9.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "dc7c727aded0be18c5b80c1640eae0ac8e396abf6fa8477d96cb37d18ee5ec59"
|
||||||
|
dependencies = [
|
||||||
|
"ab_glyph_rasterizer",
|
||||||
"libm",
|
"libm",
|
||||||
"ordered-float",
|
"owned_ttf_parser",
|
||||||
"stb_truetype",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -112,13 +485,58 @@ dependencies = [
|
|||||||
"bitflags",
|
"bitflags",
|
||||||
"cc",
|
"cc",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"ttf-parser",
|
"ttf-parser 0.8.3",
|
||||||
"unicode-bidi-mirroring",
|
"unicode-bidi-mirroring",
|
||||||
"unicode-ccc",
|
"unicode-ccc",
|
||||||
"unicode-general-category",
|
"unicode-general-category",
|
||||||
"unicode-script",
|
"unicode-script",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "scoped-tls"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sdl2"
|
||||||
|
version = "0.32.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d051a07231e303f5f719da78cb6f7394f6d5b54f733aef5b0b447804a83edd7b"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
"lazy_static",
|
||||||
|
"libc",
|
||||||
|
"num",
|
||||||
|
"rand 0.6.5",
|
||||||
|
"sdl2-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sdl2-sys"
|
||||||
|
version = "0.32.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "34e71125077d297d57e4c1acfe8981b5bdfbf5a20e7b589abfdcb33bf1127f86"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if 0.1.10",
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "semver"
|
||||||
|
version = "0.9.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
|
||||||
|
dependencies = [
|
||||||
|
"semver-parser",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "semver-parser"
|
||||||
|
version = "0.7.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "smallvec"
|
name = "smallvec"
|
||||||
version = "1.5.0"
|
version = "1.5.0"
|
||||||
@ -132,15 +550,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "a260c96bf26273969f360c2fc2e2c7732acc2ce49d939c7243c7230c2ad179d0"
|
checksum = "a260c96bf26273969f360c2fc2e2c7732acc2ce49d939c7243c7230c2ad179d0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "stb_truetype"
|
name = "tempfile"
|
||||||
version = "0.3.0"
|
version = "3.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "824210d6fb52cbc3ad2545270ead6860c7311aa5450642b078da4515937b6f7a"
|
checksum = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder",
|
"cfg-if 0.1.10",
|
||||||
"libm",
|
"libc",
|
||||||
|
"rand 0.7.3",
|
||||||
|
"redox_syscall",
|
||||||
|
"remove_dir_all",
|
||||||
|
"winapi",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ttf-parser"
|
||||||
|
version = "0.6.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3e5d7cd7ab3e47dda6e56542f4bbf3824c15234958c6e1bd6aaa347e93499fdc"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ttf-parser"
|
name = "ttf-parser"
|
||||||
version = "0.8.3"
|
version = "0.8.3"
|
||||||
@ -170,3 +598,152 @@ name = "unicode-script"
|
|||||||
version = "0.5.2"
|
version = "0.5.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "79bf4d5fc96546fdb73f9827097810bbda93b11a6770ff3a54e1f445d4135787"
|
checksum = "79bf4d5fc96546fdb73f9827097810bbda93b11a6770ff3a54e1f445d4135787"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-xid"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "void"
|
||||||
|
version = "1.0.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasi"
|
||||||
|
version = "0.9.0+wasi-snapshot-preview1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wayland-client"
|
||||||
|
version = "0.25.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a42cb608953ec8e132c7f53fde722cca9bfbf8b2071d685dbbb8df2b567fee8b"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
"downcast-rs",
|
||||||
|
"libc",
|
||||||
|
"nix",
|
||||||
|
"scoped-tls",
|
||||||
|
"wayland-commons",
|
||||||
|
"wayland-scanner",
|
||||||
|
"wayland-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wayland-commons"
|
||||||
|
version = "0.25.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8caa2f106138cf71358c6a9e84468e4406069cec93cbd6dbfce92225fc175932"
|
||||||
|
dependencies = [
|
||||||
|
"nix",
|
||||||
|
"once_cell",
|
||||||
|
"smallvec",
|
||||||
|
"wayland-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wayland-cursor"
|
||||||
|
version = "0.25.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3d774f69a6a4a9eac6d1a29cea45a4750ee7f997520421b2068f099a11b4cbba"
|
||||||
|
dependencies = [
|
||||||
|
"wayland-client",
|
||||||
|
"wayland-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wayland-protocols"
|
||||||
|
version = "0.25.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f784a990d5fa6d846fa93eb8d3bb744ff1e6ec60c7f785b0a0ee2f1a1f20bee9"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
"wayland-client",
|
||||||
|
"wayland-commons",
|
||||||
|
"wayland-scanner",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wayland-scanner"
|
||||||
|
version = "0.25.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f45ddc08a8078f3efa96b5f413268cc9c53b30712891de081fbc1d5846fbc736"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"xml-rs",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wayland-sys"
|
||||||
|
version = "0.25.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "80f9fc64f9045ad5ff491886a9460437655353e8be73c1b3f29f569342553319"
|
||||||
|
dependencies = [
|
||||||
|
"dlib",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi"
|
||||||
|
version = "0.3.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
||||||
|
dependencies = [
|
||||||
|
"winapi-i686-pc-windows-gnu",
|
||||||
|
"winapi-x86_64-pc-windows-gnu",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-i686-pc-windows-gnu"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-x86_64-pc-windows-gnu"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "x11-dl"
|
||||||
|
version = "2.18.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2bf981e3a5b3301209754218f962052d4d9ee97e478f4d26d4a6eced34c1fef8"
|
||||||
|
dependencies = [
|
||||||
|
"lazy_static",
|
||||||
|
"libc",
|
||||||
|
"maybe-uninit",
|
||||||
|
"pkg-config",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "xkb"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "aec02bc5de902aa579f3d2f2c522edaf40fa42963cbaffe645b058ddcc68fdb2"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
"libc",
|
||||||
|
"xkbcommon-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "xkbcommon-sys"
|
||||||
|
version = "0.7.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "fa434980dca02ebf28795d71e570dbb78316d095a228707efd6117bf8246d78b"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"pkg-config",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "xml-rs"
|
||||||
|
version = "0.8.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b07db065a5cf61a7e4ba64f29e67db906fb1787316516c4e6e5ff0fea1efcd8a"
|
||||||
|
18
Cargo.toml
18
Cargo.toml
@ -1,13 +1,21 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "rust-font-test"
|
|
||||||
version = "0.1.0"
|
|
||||||
authors = ["Sean Cross <sean@xobs.io>"]
|
authors = ["Sean Cross <sean@xobs.io>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
name = "rust-font-test"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
#fontdue = "0.2.4"
|
minifb = "0.17"
|
||||||
stats_alloc = "0.1.8"
|
rusttype = {version = "0.9.2", default-features = false, features = ["libm-math"]}
|
||||||
rusttype = {version = "0.8.1", default-features = false, features = ["libm-math"] }
|
|
||||||
rustybuzz = "0.2.0"
|
rustybuzz = "0.2.0"
|
||||||
|
stats_alloc = "0.1.8"
|
||||||
|
|
||||||
|
[profile.release]
|
||||||
|
codegen-units = 1 # 1 better optimizations
|
||||||
|
debug = true # symbols are nice and they don't increase the size on Flash
|
||||||
|
|
||||||
|
[features]
|
||||||
|
feature_one = []
|
||||||
|
feature_two = []
|
||||||
|
BIN
resources/IBMPlexSans-Medium.ttf
Normal file
BIN
resources/IBMPlexSans-Medium.ttf
Normal file
Binary file not shown.
BIN
resources/IBMPlexSans-Regular.ttf
Normal file
BIN
resources/IBMPlexSans-Regular.ttf
Normal file
Binary file not shown.
BIN
resources/NotoEmoji-Regular.ttf
Normal file
BIN
resources/NotoEmoji-Regular.ttf
Normal file
Binary file not shown.
BIN
resources/NotoSansSC-Black.otf
Normal file
BIN
resources/NotoSansSC-Black.otf
Normal file
Binary file not shown.
BIN
resources/NotoSansSC-Bold.otf
Normal file
BIN
resources/NotoSansSC-Bold.otf
Normal file
Binary file not shown.
BIN
resources/NotoSansSC-Light.otf
Normal file
BIN
resources/NotoSansSC-Light.otf
Normal file
Binary file not shown.
BIN
resources/NotoSansSC-Light.ttf
Normal file
BIN
resources/NotoSansSC-Light.ttf
Normal file
Binary file not shown.
BIN
resources/NotoSansSC-Medium.otf
Normal file
BIN
resources/NotoSansSC-Medium.otf
Normal file
Binary file not shown.
BIN
resources/NotoSansSC-Medium.ttf
Normal file
BIN
resources/NotoSansSC-Medium.ttf
Normal file
Binary file not shown.
BIN
resources/NotoSansSC-Regular.otf
Normal file
BIN
resources/NotoSansSC-Regular.otf
Normal file
Binary file not shown.
BIN
resources/NotoSansSC-Regular.subset.ttf
Normal file
BIN
resources/NotoSansSC-Regular.subset.ttf
Normal file
Binary file not shown.
BIN
resources/NotoSansSC-Regular.ttf
Normal file
BIN
resources/NotoSansSC-Regular.ttf
Normal file
Binary file not shown.
BIN
resources/NotoSansSC-Thin.otf
Normal file
BIN
resources/NotoSansSC-Thin.otf
Normal file
Binary file not shown.
BIN
resources/Symbola-AjYx.ttf
Normal file
BIN
resources/Symbola-AjYx.ttf
Normal file
Binary file not shown.
BIN
resources/TwitterColorEmoji-SVGinOT.ttf
Normal file
BIN
resources/TwitterColorEmoji-SVGinOT.ttf
Normal file
Binary file not shown.
309
src/main.rs
309
src/main.rs
@ -1,4 +1,5 @@
|
|||||||
use rusttype::{point, Font, FontCollection, PositionedGlyph, Scale};
|
use rusttype::{point, Font, PositionedGlyph, Scale};
|
||||||
|
use std::convert::TryInto;
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
|
|
||||||
// Add an allocator that lets us keep track of the system
|
// Add an allocator that lets us keep track of the system
|
||||||
@ -10,7 +11,8 @@ static GLOBAL: &StatsAlloc<System> = &INSTRUMENTED_SYSTEM;
|
|||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
// Chinese test
|
// Chinese test
|
||||||
let font = include_bytes!("../resources/WenQuanYiMicroHei-01.ttf");
|
// let font = include_bytes!("../resources/WenQuanYiMicroHei-01.ttf");
|
||||||
|
let font = include_bytes!("../resources/NotoSansSC-Regular.ttf");
|
||||||
let message = " 發啊你好";
|
let message = " 發啊你好";
|
||||||
let rtl = false;
|
let rtl = false;
|
||||||
println!();
|
println!();
|
||||||
@ -21,17 +23,45 @@ fn main() {
|
|||||||
|
|
||||||
// Arabic test
|
// Arabic test
|
||||||
let font = include_bytes!("../resources/LateefRegOT.ttf");
|
let font = include_bytes!("../resources/LateefRegOT.ttf");
|
||||||
let message = "مرحبا بالعالم"; // "Hello, world!"
|
let message = "مرحبا بالعالم "; // "Hello, world!"
|
||||||
// let message = "مممممم"; // Kerning test nonsense string
|
// let message = "مممممم"; // Kerning test nonsense string
|
||||||
let rtl = true;
|
let rtl = true;
|
||||||
// let message = "agylixm";
|
|
||||||
// let rtl = false;
|
|
||||||
println!();
|
println!();
|
||||||
println!("RUSTTYPE TEST:");
|
println!("RUSTTYPE TEST:");
|
||||||
test_rusttype(font, message, rtl);
|
test_rusttype(font, message, rtl);
|
||||||
|
|
||||||
println!("RUSTTYPE + RUSTYBUZZ TEST:");
|
println!("RUSTTYPE + RUSTYBUZZ TEST:");
|
||||||
test_rusthbuzz(font, message);
|
test_rusthbuzz(font, message);
|
||||||
|
|
||||||
|
// Emoji Test
|
||||||
|
// let font = include_bytes!("../resources/TwitterColorEmoji-SVGinOT.ttf");
|
||||||
|
// let font = include_bytes!("../resources/Symbola-AjYx.ttf");
|
||||||
|
let font = include_bytes!("../resources/NotoEmoji-Regular.ttf");
|
||||||
|
let message = concat!(
|
||||||
|
"🐶🐱🦁🐎🦄🐷🐘🐰\n",
|
||||||
|
"🐼🐓🐧🐢🐟🐙🦋🌷\n",
|
||||||
|
"🌳🌵🍄🌏🌙☁️🔥🍌\n",
|
||||||
|
"🍎🍓🌽🍕🎂❤️😀🤖\n",
|
||||||
|
"🎩👓🔧🎅👍☂️⌛⏰\n",
|
||||||
|
"🎁💡📕✏️📎✂️🔒🔑\n",
|
||||||
|
"🔨☎️🏁🚂🚲✈️🚀🏆\n",
|
||||||
|
"⚽🎸🎺🔔⚓🎧📁📌\n",
|
||||||
|
"Hello, world! ää 🀄🃏\u{1F170}\u{1F170}\u{FE0F}\n",
|
||||||
|
// "🐶🐱🦁🐎🦄🐷🐘🐰🐼🐓🐧🐢🐟🐙🦋🌷🌳🌵🍄🌏🌙☁️🔥🍌🍎🍓🌽🍕🎂❤️😀🤖🎩👓🔧🎅👍☂️⌛⏰🎁💡📕✏️📎✂️🔒🔑🔨☎️🏁🚂🚲✈️🚀🏆⚽🎸🎺🔔⚓🎧📁📌"
|
||||||
|
);
|
||||||
|
println!();
|
||||||
|
println!("RUSTTYPE + RUSTYBUZZ TEST:");
|
||||||
|
|
||||||
|
test_rusthbuzz(font, message);
|
||||||
|
let font = include_bytes!("../resources/TwitterColorEmoji-SVGinOT.ttf");
|
||||||
|
println!();
|
||||||
|
println!("RUSTTYPE + RUSTYBUZZ TEST:");
|
||||||
|
test_rusthbuzz(font, message);
|
||||||
|
|
||||||
|
let font = include_bytes!("../resources/Symbola-AjYx.ttf");
|
||||||
|
println!();
|
||||||
|
println!("RUSTTYPE + RUSTYBUZZ TEST:");
|
||||||
|
test_rusthbuzz(font, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
// fn test_fontdue(font: &[u8], message: &str, _rtl: bool) {
|
// fn test_fontdue(font: &[u8], message: &str, _rtl: bool) {
|
||||||
@ -54,9 +84,32 @@ fn main() {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
fn test_rusthbuzz(font: &[u8], message: &str) {
|
fn test_rusthbuzz(font: &[u8], message: &str) {
|
||||||
const FB_WIDTH: usize = 520;
|
const FB_WIDTH: usize = 336;
|
||||||
const FB_HEIGHT: usize = 200;
|
const FB_HEIGHT: usize = 536;
|
||||||
let mut buffer = [[0f32; FB_WIDTH]; FB_HEIGHT];
|
let rusttype_height = 32.0;
|
||||||
|
let mut buffer = vec![];
|
||||||
|
for _ in 0..FB_HEIGHT {
|
||||||
|
buffer.push(vec![0f32; FB_WIDTH]);
|
||||||
|
}
|
||||||
|
use minifb::{Key, Window, WindowOptions};
|
||||||
|
let mut window = Window::new(
|
||||||
|
"Betrusted",
|
||||||
|
FB_WIDTH,
|
||||||
|
FB_HEIGHT,
|
||||||
|
WindowOptions {
|
||||||
|
scale_mode: minifb::ScaleMode::AspectRatioStretch,
|
||||||
|
resize: true,
|
||||||
|
..WindowOptions::default()
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.unwrap_or_else(|e| {
|
||||||
|
panic!("{}", e);
|
||||||
|
});
|
||||||
|
const DARK_COLOUR: u32 = 0xB5B5AD;
|
||||||
|
const LIGHT_COLOUR: u32 = 0x1B1B19;
|
||||||
|
let mut native_buffer = vec![LIGHT_COLOUR; FB_WIDTH * FB_HEIGHT];
|
||||||
|
|
||||||
|
let lines = message.split('\n');
|
||||||
|
|
||||||
let reg = Region::new(&GLOBAL);
|
let reg = Region::new(&GLOBAL);
|
||||||
|
|
||||||
@ -64,140 +117,156 @@ fn test_rusthbuzz(font: &[u8], message: &str) {
|
|||||||
println!("buzz_font: {:#?}", reg.change());
|
println!("buzz_font: {:#?}", reg.change());
|
||||||
buzz_font.set_pixels_per_em(Some((196, 196)));
|
buzz_font.set_pixels_per_em(Some((196, 196)));
|
||||||
|
|
||||||
let mut buzz_buffer = rustybuzz::UnicodeBuffer::new();
|
|
||||||
println!("buzz_buffer: {:#?}", reg.change());
|
|
||||||
|
|
||||||
buzz_buffer.push_str(message);
|
|
||||||
println!("buzz_buffer_push: {:#?}", reg.change());
|
|
||||||
|
|
||||||
let buzz_features = vec![];
|
let buzz_features = vec![];
|
||||||
println!("buzz_features: {:#?}", reg.change());
|
println!("buzz_features: {:#?}", reg.change());
|
||||||
|
|
||||||
let glyph_buffer = rustybuzz::shape(&buzz_font, &buzz_features, buzz_buffer);
|
let mut buzz_buffer = rustybuzz::UnicodeBuffer::new();
|
||||||
println!("buzz_shape: {:#?}", reg.change());
|
println!("buzz_buffer: {:#?}", reg.change());
|
||||||
|
|
||||||
let rusttype_font = Font::from_bytes(font).unwrap_or_else(|e| {
|
for (line_number, line) in lines.enumerate() {
|
||||||
panic!("error constructing a FontCollection from bytes: {}", e);
|
buzz_buffer.push_str(line);
|
||||||
});
|
println!("buzz_buffer_push: {:#?}", reg.change());
|
||||||
println!("fonttype_collection: {:#?}", reg.change());
|
|
||||||
|
|
||||||
let mut cursor_x = 0.0;
|
let glyph_buffer = rustybuzz::shape(&buzz_font, &buzz_features, buzz_buffer);
|
||||||
let mut cursor_y = 0.0;
|
println!("buzz_shape: {:#?}", reg.change());
|
||||||
|
|
||||||
let rusttype_height = 196.0;
|
let rusttype_font =
|
||||||
let rusttype_scale = rusttype::Scale {
|
Font::try_from_bytes(font).expect("error constructing a Font from bytes");
|
||||||
x: rusttype_height * 1.0,
|
println!("fonttype_collection: {:#?}", reg.change());
|
||||||
y: rusttype_height,
|
|
||||||
};
|
|
||||||
// Adapt the harfbuzz scale to rusttype's scale.
|
|
||||||
// I'm not sure where the "1.2" comes from, but the units only *just* match.
|
|
||||||
let harfbuzz_scale = rusttype_font.units_per_em() as f32 / rusttype_height * 1.2;
|
|
||||||
|
|
||||||
let v_metrics = rusttype_font.v_metrics(rusttype_scale);
|
let mut cursor_x = 0.0;
|
||||||
let offset = point(0.0, v_metrics.ascent);
|
let mut cursor_y = (line_number as f32) * rusttype_height;
|
||||||
|
|
||||||
// println!("font is {} units-per-em", rusttype_font.units_per_em());
|
let rusttype_scale = rusttype::Scale {
|
||||||
for (buzz_info, buzz_position) in glyph_buffer
|
x: rusttype_height * 1.0,
|
||||||
.glyph_infos()
|
y: rusttype_height,
|
||||||
.iter()
|
};
|
||||||
.zip(glyph_buffer.glyph_positions().iter())
|
// Adapt the harfbuzz scale to rusttype's scale.
|
||||||
{
|
// I'm not sure where the "1.2" comes from, but the units only *just* match.
|
||||||
// let codepoint_rs = char::try_from(buzz_info.codepoint).expect("invalid codepoint");
|
let harfbuzz_scale = rusttype_font.units_per_em() as f32 / rusttype_height * 1.0 /* * 1.2 */;
|
||||||
let font_glyph = rusttype_font.glyph(rusttype::GlyphId(buzz_info.codepoint));
|
|
||||||
let glyph_scaled = font_glyph.scaled(rusttype_scale);
|
|
||||||
|
|
||||||
let x_offset = buzz_position.x_offset as f32 / harfbuzz_scale;
|
let v_metrics = rusttype_font.v_metrics(rusttype_scale);
|
||||||
let y_offset = buzz_position.y_offset as f32 / harfbuzz_scale;
|
let offset = point(0.0, v_metrics.ascent);
|
||||||
let x_advance = buzz_position.x_advance as f32 / harfbuzz_scale;
|
|
||||||
let y_advance = buzz_position.y_advance as f32 / harfbuzz_scale;
|
|
||||||
|
|
||||||
let glyph_positioned = glyph_scaled.positioned(rusttype::Point {
|
// println!("font is {} units-per-em", rusttype_font.units_per_em());
|
||||||
x: (x_offset as f32) + offset.x,
|
for (buzz_info, buzz_position) in glyph_buffer
|
||||||
y: (y_offset as f32) + offset.y,
|
.glyph_infos()
|
||||||
});
|
.iter()
|
||||||
|
.zip(glyph_buffer.glyph_positions().iter())
|
||||||
|
{
|
||||||
|
// let codepoint_rs = char::try_from(buzz_info.codepoint).expect("invalid codepoint");
|
||||||
|
let font_glyph = rusttype_font.glyph(rusttype::GlyphId(
|
||||||
|
buzz_info
|
||||||
|
.codepoint
|
||||||
|
.try_into()
|
||||||
|
.expect("codepoint out of range"),
|
||||||
|
));
|
||||||
|
let glyph_scaled = font_glyph.scaled(rusttype_scale);
|
||||||
|
|
||||||
if let Some(bb) = glyph_positioned.pixel_bounding_box() {
|
let x_offset = buzz_position.x_offset as f32 / harfbuzz_scale;
|
||||||
// println!(
|
let y_offset = buzz_position.y_offset as f32 / harfbuzz_scale;
|
||||||
// "Offset: {} / {}, {} / {} {}/{} {}/{}",
|
let x_advance = buzz_position.x_advance as f32 / harfbuzz_scale;
|
||||||
// x_offset, y_offset,
|
let y_advance = buzz_position.y_advance as f32 / harfbuzz_scale;
|
||||||
// x_advance, y_advance,
|
|
||||||
// cursor_x, cursor_y,
|
|
||||||
// bb.min.x, bb.min.y,
|
|
||||||
// );
|
|
||||||
glyph_positioned.draw(|x, y, weight| {
|
|
||||||
let x = (x as f32) + ((cursor_x + x_offset) as f32) + (bb.min.x as f32);
|
|
||||||
let y = (y as f32) + ((cursor_y + y_offset) as f32) + (bb.min.y as f32);
|
|
||||||
|
|
||||||
if (x < 0.0)
|
let glyph_positioned = glyph_scaled.positioned(rusttype::Point {
|
||||||
|| (x >= (buffer[0].len() as f32))
|
x: (x_offset as f32) + offset.x,
|
||||||
|| (y < 0.0)
|
y: (y_offset as f32) + offset.y,
|
||||||
|| (y >= (buffer.len() as f32))
|
|
||||||
{
|
|
||||||
// println!("(x,y) out of bounds: ({}, {})", x, y);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let x = x as usize;
|
|
||||||
let y = y as usize;
|
|
||||||
// if y < buffer.len() && x < buffer[0].len() {
|
|
||||||
buffer[y][x] += weight;
|
|
||||||
// }
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if let Some(bb) = glyph_positioned.pixel_bounding_box() {
|
||||||
|
// println!(
|
||||||
|
// "Offset: {} / {}, {} / {} {}/{} {}/{}",
|
||||||
|
// x_offset, y_offset,
|
||||||
|
// x_advance, y_advance,
|
||||||
|
// cursor_x, cursor_y,
|
||||||
|
// bb.min.x, bb.min.y,
|
||||||
|
// );
|
||||||
|
glyph_positioned.draw(|x, y, weight| {
|
||||||
|
let x = (x as f32) + ((cursor_x + x_offset) as f32) + (bb.min.x as f32);
|
||||||
|
let y = (y as f32) + ((cursor_y + y_offset) as f32) + (bb.min.y as f32);
|
||||||
|
|
||||||
|
if (x < 0.0)
|
||||||
|
|| (x >= (buffer[0].len() as f32))
|
||||||
|
|| (y < 0.0)
|
||||||
|
|| (y >= (buffer.len() as f32))
|
||||||
|
{
|
||||||
|
// println!("(x,y) out of bounds: ({}, {})", x, y);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let x = x as usize;
|
||||||
|
let y = y as usize;
|
||||||
|
// if y < buffer.len() && x < buffer[0].len() {
|
||||||
|
buffer[y][x] += weight;
|
||||||
|
// }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
cursor_x += x_advance;
|
||||||
|
cursor_y += y_advance;
|
||||||
}
|
}
|
||||||
cursor_x += x_advance;
|
buzz_buffer = glyph_buffer.clear();
|
||||||
cursor_y += y_advance;
|
buzz_buffer.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
// println!("Buffer: {:?}", buffer);
|
let mut offset = 0;
|
||||||
for y in (0..buffer.len() - 4).step_by(4) {
|
for line in &*buffer {
|
||||||
for x in (0..buffer[y].len() - 2).step_by(2) {
|
for pixel in line {
|
||||||
let mut offset = 0;
|
native_buffer[offset] = if pixel > &0.5 {
|
||||||
let threshold = 0.5;
|
LIGHT_COLOUR
|
||||||
|
} else {
|
||||||
if buffer[y + 0][x + 0] > threshold {
|
DARK_COLOUR
|
||||||
offset |= 1 << 0;
|
};
|
||||||
}
|
offset += 1;
|
||||||
if buffer[y + 1][x + 0] > threshold {
|
|
||||||
offset |= 1 << 1;
|
|
||||||
}
|
|
||||||
if buffer[y + 2][x + 0] > threshold {
|
|
||||||
offset |= 1 << 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if buffer[y + 0][x + 1] > threshold {
|
|
||||||
offset |= 1 << 3;
|
|
||||||
}
|
|
||||||
if buffer[y + 1][x + 1] > threshold {
|
|
||||||
offset |= 1 << 4;
|
|
||||||
}
|
|
||||||
if buffer[y + 2][x + 1] > threshold {
|
|
||||||
offset |= 1 << 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
if buffer[y + 3][x + 0] > threshold {
|
|
||||||
offset |= 1 << 6;
|
|
||||||
}
|
|
||||||
if buffer[y + 3][x + 1] > threshold {
|
|
||||||
offset |= 1 << 7;
|
|
||||||
}
|
|
||||||
let pixel_br = std::char::from_u32(0x2800 + offset).unwrap();
|
|
||||||
print!("{}", pixel_br);
|
|
||||||
}
|
}
|
||||||
println!();
|
|
||||||
}
|
}
|
||||||
|
window
|
||||||
|
.update_with_buffer(&native_buffer, FB_WIDTH, FB_HEIGHT)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
while window.is_open() && !window.is_key_down(Key::Escape) {
|
||||||
|
window.update();
|
||||||
|
}
|
||||||
|
// for y in (0..buffer.len() - 4).step_by(4) {
|
||||||
|
// for x in (0..buffer[y].len() - 2).step_by(2) {
|
||||||
|
// let mut offset = 0;
|
||||||
|
// let threshold = 0.5;
|
||||||
|
|
||||||
|
// if buffer[y + 0][x + 0] > threshold {
|
||||||
|
// offset |= 1 << 0;
|
||||||
|
// }
|
||||||
|
// if buffer[y + 1][x + 0] > threshold {
|
||||||
|
// offset |= 1 << 1;
|
||||||
|
// }
|
||||||
|
// if buffer[y + 2][x + 0] > threshold {
|
||||||
|
// offset |= 1 << 2;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if buffer[y + 0][x + 1] > threshold {
|
||||||
|
// offset |= 1 << 3;
|
||||||
|
// }
|
||||||
|
// if buffer[y + 1][x + 1] > threshold {
|
||||||
|
// offset |= 1 << 4;
|
||||||
|
// }
|
||||||
|
// if buffer[y + 2][x + 1] > threshold {
|
||||||
|
// offset |= 1 << 5;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if buffer[y + 3][x + 0] > threshold {
|
||||||
|
// offset |= 1 << 6;
|
||||||
|
// }
|
||||||
|
// if buffer[y + 3][x + 1] > threshold {
|
||||||
|
// offset |= 1 << 7;
|
||||||
|
// }
|
||||||
|
// let pixel_br = std::char::from_u32(0x2800 + offset).unwrap();
|
||||||
|
// print!("{}", pixel_br);
|
||||||
|
// }
|
||||||
|
// println!();
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_rusttype(font: &[u8], message: &str, rtl: bool) {
|
fn test_rusttype(font: &[u8], message: &str, rtl: bool) {
|
||||||
let reg = Region::new(&GLOBAL);
|
let reg = Region::new(&GLOBAL);
|
||||||
let collection = FontCollection::from_bytes(font).unwrap_or_else(|e| {
|
|
||||||
panic!("error constructing a FontCollection from bytes: {}", e);
|
|
||||||
});
|
|
||||||
println!("collection: {:#?}", reg.change());
|
|
||||||
|
|
||||||
let font = collection
|
let font = Font::try_from_bytes(font).expect("couldn't read font file");
|
||||||
.into_font() // only succeeds if collection consists of one font
|
|
||||||
.unwrap_or_else(|e| {
|
|
||||||
panic!("error turning FontCollection into a Font: {}", e);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Desired font pixel height
|
// Desired font pixel height
|
||||||
let height: f32 = 20.0; // to get 80 chars across (fits most terminals); adjust as desired
|
let height: f32 = 20.0; // to get 80 chars across (fits most terminals); adjust as desired
|
||||||
|
Loading…
Reference in New Issue
Block a user