+ if(!(fat_font = dtx_open_font_glyphmap("data/fat.glyphmap")) ||
+ dtx_get_glyphmap_ptsize(dtx_get_glyphmap(fat_font, 0)) != FAT_FONT_SZ) {
+
+ dtx_set(DTX_PADDING, 64);
+
+ if(!(fat_font = dtx_open_font("data/fat.font", 0))) {
+ fprintf(stderr, "failed to open font file data/fat.font\n");
+ return false;
+ }
+ dtx_prepare_range(fat_font, FAT_FONT_SZ * 8, 32, 127);
+ dtx_calc_font_distfield(fat_font, 1, 8);
+ dtx_save_glyphmap("data/fat.glyphmap", dtx_get_glyphmap(fat_font, 0));
+ }
+ dtx_use_font(fat_font, FAT_FONT_SZ);
+
+ struct dtx_glyphmap *fat_gmap = dtx_get_glyphmap(fat_font, 0);
+ Vec2 pixsz;
+ pixsz.x = 1.0 / dtx_get_glyphmap_width(fat_gmap);
+ pixsz.y = 1.0 / dtx_get_glyphmap_height(fat_gmap);
+
+ if(!(chrome_font_sdr = create_program_load("sdr/chrome_font.v.glsl", "sdr/chrome_font.p.glsl"))) {
+ return false;
+ }
+ set_uniform_float(chrome_font_sdr, "height", dtx_line_height());
+ set_uniform_float(chrome_font_sdr, "smoothness", 0.01);
+ set_uniform_float2(chrome_font_sdr, "pix_sz", pixsz.x, pixsz.y);
+
+ if(!(glow_font_sdr = create_program_load("sdr/dfont.v.glsl", "sdr/glow_font.p.glsl"))) {
+ return false;
+ }
+ set_uniform_float(glow_font_sdr, "smoothness", 0.01);
+ set_uniform_float2(glow_font_sdr, "pix_sz", pixsz.x, pixsz.y);
+
+ if(!(glow_link_sdr = create_program_load("sdr/glink.v.glsl", "sdr/glink.p.glsl"))) {
+ return false;
+ }
+
+ if(!(cur_node = get_fsnode(path))) {
+ return false;
+ }