summaryrefslogtreecommitdiff
path: root/nuklear_ui/sfnt.h
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2018-03-06 21:27:12 -0800
committerMichael Pavone <pavone@retrodev.com>2018-03-06 21:27:12 -0800
commitd738c30dec8a7c9f351094851c00a4623f339084 (patch)
treed74219313a54b16466a53f4be180093cd5775a02 /nuklear_ui/sfnt.h
parent94b11b186fa4cf46c64bc3fad55f74c7b5096ffe (diff)
Added support for TTC and dfont format true type fonts. More robust font selection on Windows
--HG-- branch : nuklear_ui
Diffstat (limited to 'nuklear_ui/sfnt.h')
-rw-r--r--nuklear_ui/sfnt.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/nuklear_ui/sfnt.h b/nuklear_ui/sfnt.h
new file mode 100644
index 0000000..010a147
--- /dev/null
+++ b/nuklear_ui/sfnt.h
@@ -0,0 +1,44 @@
+#ifndef SFNT_H_
+#define SFNT_H_
+
+#include <stdint.h>
+enum {
+ CONTAINER_TTF,
+ CONTAINER_TTC,
+ CONTAINER_DFONT
+};
+
+enum {
+ SFNT_COPYRIGHT,
+ SFNT_FAMILY,
+ SFNT_SUBFAMILY,
+ SFNT_SUBFAMILY_UNIQUE,
+ SFNT_FULL_NAME,
+ SFNT_VERSION,
+ SFNT_POSTSCRIPT,
+ //TODO: add the rest of the name IDs
+};
+
+typedef struct sfnt_container sfnt_container;
+typedef struct {
+ uint8_t *data;
+ sfnt_container *container;
+ uint32_t offset;
+ uint16_t num_entries;
+} sfnt_table;
+
+struct sfnt_container {
+ uint8_t *blob;
+ sfnt_table *tables;
+ uint32_t size;
+ uint8_t num_fonts;
+ uint8_t container_type;
+};
+
+sfnt_container *load_sfnt(uint8_t *buffer, uint32_t size);
+char *sfnt_name(sfnt_table *sfnt, uint16_t name_type);
+uint8_t *sfnt_flatten(sfnt_table *sfnt, uint32_t *size_out);
+sfnt_table *sfnt_subfamily_by_names(sfnt_container *sfnt, const char **names);
+void sfnt_free(sfnt_container *sfnt);
+
+#endif // SFNT_H_ \ No newline at end of file