final edits for release
@@ -31,11 +31,13 @@ | ||
31 | 31 | You should have received a copy of the GNU General Public License along |
32 | 32 | with this program. If not, see <http://www.gnu.org/licenses/>. |
33 | 33 | |
34 | -The IDSgrep program (not included in standard distributions of | |
35 | -Tsukurimashou, but available from the same source-control repositories) is | |
36 | -covered by the above notice except without the font-embedding exception, | |
37 | -which would be irrelevant to IDSgrep. | |
34 | +The IDSgrep program is covered by the above notice except without the | |
35 | +font-embedding exception, which would be irrelevant to IDSgrep. | |
38 | 36 | |
37 | +FontAnvil when considered by itself, instead of as part of the aggregate of | |
38 | +the Tsukurimashou Project, is covered by GNU GPL, version 3, "or any later | |
39 | +version." | |
40 | + | |
39 | 41 | The files mp/fntbase.mp and tools/mp2pf, which are modified versions of code |
40 | 42 | from the METATYPE1 package, are public domain with the following notices: |
41 | 43 |
@@ -239,4 +241,3 @@ | ||
239 | 241 | |
240 | 242 | 1.5 and later versions contain changes by, and are maintained by, |
241 | 243 | Eddie Kohler <ekohler@gmail.com>. |
242 | - |
@@ -67,7 +67,7 @@ | ||
67 | 67 | |
68 | 68 | # SILENT BUILD BLINKENLIGHTS |
69 | 69 | |
70 | -TSU_V_REDIR=$(if $(AM_V_at),>& /dev/null) | |
70 | +TSU_V_REDIR=$(if $(AM_V_at),> /dev/null 2>&1) | |
71 | 71 | |
72 | 72 | if COND_COLOUR |
73 | 73 | escchar:=$(strip $(shell echo x | tr 'x' '\033')) |
@@ -984,7 +984,7 @@ | ||
984 | 984 | |
985 | 985 | doc_font_script := '$(PERL)' -CSD -e \ |
986 | 986 | 'while (<>) { chomp; while (/%\s*$$/) { $$_.=<>; chomp; } if (\ |
987 | - /(newfontfamily|newfontface|setmainfont|setmonofont).*\{([^{}]+)\}+\s*$$/\ | |
987 | + /(fontspec|newfontfamily|newfontface|setmainfont|setmonofont).*\{([^{}]+)\}+\s*$$/\ | |
988 | 988 | ) { $$d{"otf/$$2.otf"}=1; } if (/ItalicFont=\{([^{}]+)\}/) {\ |
989 | 989 | $$d{"otf/$$1.otf"}=1; } } print join(" ",keys %d);' |
990 | 990 | filter_demo_deps = $(filter $(strip $(foreach st,$(SHORT_STYLES), \ |
@@ -1047,7 +1047,7 @@ | ||
1047 | 1047 | echo >> makefile-pdf.inc ; \ |
1048 | 1048 | done |
1049 | 1049 | |
1050 | -doc/usermanual.xdv: $(dist_otf_DATA) | |
1050 | +doc/usermanual.xdv: $(dist_otf_DATA) $(otf_DATA) | |
1051 | 1051 | |
1052 | 1052 | nocomma_date:=$(subst $(comma),,@release_date@) |
1053 | 1053 | doc/version.tex: hamlog/config.hl |
@@ -61,7 +61,7 @@ | ||
61 | 61 | |
62 | 62 | # SILENT BUILD BLINKENLIGHTS |
63 | 63 | |
64 | -TSU_V_REDIR=$(if $(AM_V_at),>& /dev/null) | |
64 | +TSU_V_REDIR=$(if $(AM_V_at),> /dev/null 2>&1) | |
65 | 65 | |
66 | 66 | if COND_COLOUR |
67 | 67 | escchar:=$(strip $(shell echo x | tr 'x' '\033')) |
@@ -206,9 +206,9 @@ | ||
206 | 206 | parallel-tests silent-rules]) |
207 | 207 | AC_CONFIG_SRCDIR([subfont.mp]) |
208 | 208 | AC_CONFIG_MACRO_DIR([m4]) |
209 | -AC_REVISION([$Id: configure.ac 8755 2021-04-06 02:23:52Z mskala $]) | |
210 | -AC_COPYRIGHT([Copyright (C) 2013 Matthew Skala]) | |
211 | -AC_SUBST([release_date],["March 7, 2013"]) | |
209 | +AC_REVISION([$Id: configure.ac 9071 2021-06-27 03:00:17Z mskala $]) | |
210 | +AC_COPYRIGHT([Copyright (C) 2013, 2021 Matthew Skala]) | |
211 | +AC_SUBST([release_date],["July 1, 2021"]) | |
212 | 212 | # this must be early so it will happen before depfiles |
213 | 213 | TSU_FIX_MAKEFILE |
214 | 214 | AM_SILENT_RULES |
@@ -200,9 +200,9 @@ | ||
200 | 200 | AC_CONFIG_SRCDIR([hamlog/hamlog]) |
201 | 201 | AC_CONFIG_HEADERS([config.h]) |
202 | 202 | AC_CONFIG_MACRO_DIR([m4]) |
203 | -AC_REVISION([$Id: configure.ac 8799 2021-04-24 14:18:02Z mskala $]) | |
204 | -AC_COPYRIGHT([Copyright (C) 2011, 2012, 2013, 2014, 2015, 2016, 2017 Matthew Skala]) | |
205 | -AC_SUBST([release_date],["November 17, 2017"]) | |
203 | +AC_REVISION([$Id: configure.ac 9086 2021-06-29 17:48:34Z mskala $]) | |
204 | +AC_COPYRIGHT([Copyright (C) 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2021 Matthew Skala]) | |
205 | +AC_SUBST([release_date],["July 1, 2021"]) | |
206 | 206 | # this must be early so it will happen before depfiles |
207 | 207 | TSU_FIX_MAKEFILE([dnl |
208 | 208 | s#TESTS = #TESTS = \$(otf_DATA) #;dnl |
@@ -302,14 +302,14 @@ | ||
302 | 302 | [Define to 1 if BuDDy is available])], |
303 | 303 | [have_buddy=no |
304 | 304 | can_full_idsgrep=no |
305 | - can_icemap=no])], | |
305 | + can_build_icemap=no])], | |
306 | 306 | [have_buddy=no |
307 | 307 | can_full_idsgrep=no |
308 | - can_icemap=no]) | |
308 | + can_build_icemap=no]) | |
309 | 309 | PKG_CHECK_MODULES([PCRE],[libpcre],[have_pcre=yes], |
310 | 310 | [have_pcre=no |
311 | 311 | can_full_idsgrep=no |
312 | - can_icemap=no]) | |
312 | + can_build_icemap=no]) | |
313 | 313 | # |
314 | 314 | ############################################################################ |
315 | 315 | # |
@@ -375,11 +375,6 @@ | ||
375 | 375 | [turn off PDF documentation])], |
376 | 376 | [], |
377 | 377 | [enable_docs=yes]) |
378 | -AC_ARG_ENABLE([download], | |
379 | - [AS_HELP_STRING([--enable-download=[yes|no]], | |
380 | - [automatically download Unicode data from UNICODE_URL [no]])], | |
381 | - [], | |
382 | - [enable_download=no]) | |
383 | 378 | AC_ARG_ENABLE([ff-debug], |
384 | 379 | [AS_HELP_STRING([--disable-ff-debug], |
385 | 380 | [turn off FontAnvil debuggery warning])], |
@@ -390,6 +385,11 @@ | ||
390 | 385 | [kanji coverage chart [auto]])], |
391 | 386 | [], |
392 | 387 | [enable_kanji_chart=auto]) |
388 | +AC_ARG_ENABLE([icemap], | |
389 | + [AS_HELP_STRING([--enable-icemap], | |
390 | + [(re-)generate table code with Icemap [auto]])], | |
391 | + [], | |
392 | + [enable_icemap=auto]) | |
393 | 393 | AC_ARG_ENABLE([ot-features], |
394 | 394 | [AS_HELP_STRING([--enable-ot-features[=TAGS]], |
395 | 395 | [OpenType feature(s) to include [all,-pfed]])], |
@@ -445,24 +445,37 @@ | ||
445 | 445 | AM_CONDITIONAL([COND_DOCS],[test '!' "$enable_docs" = no]) |
446 | 446 | AC_SUBST([enable_docs]) |
447 | 447 | # |
448 | -AM_CONDITIONAL([COND_DOWNLOAD],[test '!' "$enable_download" = no]) | |
449 | -# | |
450 | 448 | AS_IF([test "x$MPOST_FLAGS" = "x"],[MPOST_FLAGS="-numbersystem=double"]) |
451 | 449 | # |
450 | +AS_IF([test "x$enable_icemap" = "xauto"], | |
451 | + [AC_MSG_CHECKING([whether to automatically enable Icemap]) | |
452 | + enable_icemap=no | |
453 | + m4_foreach_w([imcheckpath],[hinttab macenctab nonmactab unicodelib],[ | |
454 | + AS_IF([test '!' -s fontanvil/fontanvil/imcheckpath.c],[enable_icemap=yes]) | |
455 | + AS_IF([test '!' -s fontanvil/fontanvil/imcheckpath.h],[enable_icemap=yes]) | |
456 | + ]) | |
457 | + m4_foreach_w([imcheckpath],[widthtab],[ | |
458 | + AS_IF([test '!' -s idsgrep/imcheckpath.c],[enable_icemap=yes]) | |
459 | + AS_IF([test '!' -s idsgrep/imcheckpath.h],[enable_icemap=yes]) | |
460 | + ]) | |
461 | + AS_IF([pwd | $GREP -q _build/sub],[enable_icemap=no]) | |
462 | + AC_MSG_RESULT([$enable_icemap]) | |
463 | + ]) | |
464 | +# | |
452 | 465 | AC_SUBST([enable_ot_features]) |
453 | 466 | # |
454 | 467 | AC_CONFIG_SUBDIRS([kleknev icemap fontanvil beikaitoru genjimon idsgrep ocr]) |
455 | 468 | AS_IF([test "x$enable_parasites" = "xauto"], |
456 | - [AS_IF([test '!' "x$FONTANVIL" = "x"], | |
457 | - [enable_parasites=none], | |
469 | + [AS_IF([test "x$FONTANVIL" = "x" || ( pwd | $GREP -q _build/sub ) ], | |
458 | 470 | [local_fontanvil_kludge=yes |
459 | - AS_IF(["$LEX" --version 2> /dev/null],[],[can_fontanvil=no]) | |
460 | - AS_IF([test -s fontanvil/fontanvil/unicodelib.h || test -x icemap/icemap], | |
471 | + AS_IF(["$LEX" --version 2> /dev/null],[],[can_build_fontanvil=no]) | |
472 | + AS_IF([test "x$enable_icemap" = "xno"], | |
461 | 473 | [enable_parasites=fontanvil], |
462 | 474 | [local_icemap_kludge=yes |
463 | 475 | enable_parasites=icemap,fontanvil |
464 | - AS_IF([test '!' -s fontanvil/dat/Blocks.txt], | |
465 | - [dl_unicode_warn=yes])])])]) | |
476 | + AS_IF([test '!' "x$enable_icemap" = "xno"], | |
477 | + [dl_unicode_warn=yes])])], | |
478 | + [enable_parasites=none])]) | |
466 | 479 | AC_SUBST([enable_parasites]) |
467 | 480 | # |
468 | 481 | AS_IF([test "x$prefix" = "xNONE"],[prefix="$ac_default_prefix"]) |
@@ -564,12 +577,6 @@ | ||
564 | 577 | # |
565 | 578 | TSU_BAD_PATHS |
566 | 579 | |
567 | -AC_MSG_CHECKING([whether PGF 2.10 workaround is needed]) | |
568 | -need_pgf_workaround=no | |
569 | -AS_VERSION_COMPARE([$pgf_version],[2.10],[],[need_pgf_workaround=yes]) | |
570 | -AM_CONDITIONAL([COND_PGFWORKAROUND],[test "x$need_pgf_workaround" = "xyes"]) | |
571 | -AC_MSG_RESULT([$need_pgf_workaround]) | |
572 | - | |
573 | 580 | AC_MSG_CHECKING([safety of silent build rules]) |
574 | 581 | can_silent_rules=yes |
575 | 582 | AS_IF([test "x$EXPECT" = "x"], |
@@ -656,10 +663,10 @@ | ||
656 | 663 | [missing_fontanvil=yes |
657 | 664 | can_core=no])]) |
658 | 665 | AS_IF([test "x$local_fontanvil_kludge" = "xyes"], |
659 | - [AS_IF([test "x$can_fontanvil" = "xno"], | |
666 | + [AS_IF([test "x$can_build_fontanvil" = "xno"], | |
660 | 667 | [can_build=no])]) |
661 | 668 | AS_IF([test "x$local_icemap_kludge" = "xyes"], |
662 | - [AS_IF([test "x$can_icemap" = "xno"], | |
669 | + [AS_IF([test "x$can_build_icemap" = "xno"], | |
663 | 670 | [can_build=no])]) |
664 | 671 | AS_IF([test "x$_cv_gnu_make_command" = "x"], |
665 | 672 | [missing_gmake=yes |
@@ -707,7 +714,7 @@ | ||
707 | 714 | can_docs=no], |
708 | 715 | [kprevision=`kpsewhich pgf.revision.tex` |
709 | 716 | kprcs=`kpsewhich pgfrcs.code.tex` |
710 | - pgf_version=`cat $kprevision $kprcs /dev/null | "$PERL" -ne 'if (/^@<:@^%@:>@+pgfversion\{(.*)\}/) { print $1; exit; }'` | |
717 | + pgf_version=`cat $kprevision $kprcs /dev/null | "$PERL" -ne 'if (/^@<:@^%@:>@+pgfversion\{(@<:@1-9@:>@.*)\}/) { print "$1 "; }'` | |
711 | 718 | AS_VERSION_COMPARE([$pgf_version],[2.00], |
712 | 719 | [missing_pgf_version=yes |
713 | 720 | can_docs=no]) |
@@ -719,6 +726,11 @@ | ||
719 | 726 | AS_IF([test "$enable_docs" = "yes" && test "$can_docs" = "no"], |
720 | 727 | [can_build=no]) |
721 | 728 | AC_MSG_RESULT([$can_docs]) |
729 | +AC_MSG_CHECKING([whether PGF 2.10 workaround is needed]) | |
730 | +need_pgf_workaround=no | |
731 | +AS_VERSION_COMPARE([$pgf_version],[2.10],[],[need_pgf_workaround=yes]) | |
732 | +AM_CONDITIONAL([COND_PGFWORKAROUND],[test "x$need_pgf_workaround" = "xyes"]) | |
733 | +AC_MSG_RESULT([$need_pgf_workaround]) | |
722 | 734 | |
723 | 735 | AC_MSG_CHECKING([kanji chart prerequisites]) |
724 | 736 | can_kanji_chart=yes |
@@ -747,8 +759,9 @@ | ||
747 | 759 | AS_IF([test "x$XELATEX" = "x"], |
748 | 760 | [missing_xelatex=yes |
749 | 761 | can_proofs=no], |
750 | - [kprcs=`kpsewhich pgfrcs.code.tex` | |
751 | - pgf_version=`cat $kprcs /dev/null | "$PERL" -ne 'print $1 if /^@<:@^%@:>@+pgfversion\{(.*)\}/'` | |
762 | + [kprevision=`kpsewhich pgf.revision.tex` | |
763 | + kprcs=`kpsewhich pgfrcs.code.tex` | |
764 | + pgf_version=`cat $kprevision $kprcs /dev/null | "$PERL" -ne 'if (/^@<:@^%@:>@+pgfversion\{(@<:@1-9@:>@.*)\}/) { print "$1 "; }'` | |
752 | 765 | AS_VERSION_COMPARE([$pgf_version],[2.00], |
753 | 766 | [missing_pgf_version=yes |
754 | 767 | can_proofs=no]) |
@@ -810,8 +823,6 @@ | ||
810 | 823 | [no],[$can_ffdebug]) |
811 | 824 | TSU_TABLE_LINE([build-system hacking ],[$enable_build_hacking], |
812 | 825 | [no],[$can_bshack]) |
813 | -TSU_TABLE_LINE([Unicode auto-download ],[$enable_download], | |
814 | - [$enable_download],[yes]) | |
815 | 826 | AS_ECHO([]) |
816 | 827 | AS_ECHO_N(["Character selection "]) |
817 | 828 | TSU_COLOURISE([$enable_chars],[6])AS_ECHO([]) |
@@ -1043,12 +1054,11 @@ | ||
1043 | 1054 | AS_ECHO(["possibilities. The download target is recursive and running it from"]) |
1044 | 1055 | AS_ECHO(["the top directory will also attempt to fetch dictionary data for IDSgrep."]) |
1045 | 1056 | AS_ECHO(["Run make download in the fontanvil/ directory to only fetch what is"]) |
1046 | - AS_ECHO(["required by FontAnvil. This step will NOT be taken automatically unless"]) | |
1047 | - AS_ECHO(["you specify the --enable-download=yes option, on the principle that build"]) | |
1048 | - AS_ECHO(["systems should never make network connections without a specific user"]) | |
1049 | - AS_ECHO(["request to do so. Use the UNICODE_URL environment variable to specify"]) | |
1050 | - AS_ECHO(["an alternate URL for the source of the files and be a better neighbour"]) | |
1051 | - AS_ECHO(["to the Unicode Consortium."])]) | |
1057 | + AS_ECHO(["required by FontAnvil. This step will NOT be taken automatically, on the"]) | |
1058 | + AS_ECHO(["principle that build systems should never make network connections without"]) | |
1059 | + AS_ECHO(["a specific user request to do so. Use the UNICODE_URL environment variable"]) | |
1060 | + AS_ECHO(["to specify an alternate URL for the source of the files and be a better"]) | |
1061 | + AS_ECHO(["neighbour to the Unicode Consortium."])]) | |
1052 | 1062 | |
1053 | 1063 | AS_IF([test "x$has_bad_paths" = "xyes"], |
1054 | 1064 | [AS_ECHO([]) |
@@ -1060,22 +1070,24 @@ | ||
1060 | 1070 | AS_ECHO(["characters from pathnames before continuing."]) |
1061 | 1071 | ]) |
1062 | 1072 | |
1063 | -AS_IF([test "x$can_fontanvil" = "xno"], | |
1073 | +AS_IF([test "x$can_build_fontanvil" = "xno"], | |
1064 | 1074 | [AS_ECHO([]) |
1065 | - AS_ECHO(["One or more dependencies needed by FontAnvil are missing:"]) | |
1075 | + AS_ECHO(["One or more dependencies needed to build FontAnvil are missing:"]) | |
1066 | 1076 | AS_IF(["$LEX" --version 2> /dev/null],[], |
1067 | 1077 | [AS_ECHO([" flex http://flex.sourceforge.net/"])]) |
1068 | - AS_ECHO(["Since the current configuration requires FontAnvil, this blocks the build."]) | |
1078 | + AS_ECHO(["Since the current configuration requires building FontAnvil, this blocks"]) | |
1079 | + AS_ECHO(["the build."]) | |
1069 | 1080 | ]) |
1070 | 1081 | |
1071 | -AS_IF([test "x$can_icemap" = "xno" && test "x$local_icemap_kludge" = "xyes"], | |
1082 | +AS_IF([test "x$can_build_icemap" = "xno" && test "x$local_icemap_kludge" = "xyes"], | |
1072 | 1083 | [AS_ECHO([]) |
1073 | - AS_ECHO(["One or more libraries needed by Icemap are missing:"]) | |
1084 | + AS_ECHO(["One or more libraries needed to build Icemap are missing:"]) | |
1074 | 1085 | AS_IF([test '!' "$have_buddy" = "yes"], |
1075 | 1086 | [AS_ECHO([" BuDDy https://sourceforge.net/projects/buddy/"])]) |
1076 | 1087 | AS_IF([test '!' "$have_pcre" = "yes"], |
1077 | 1088 | [AS_ECHO([" PCRE http://www.pcre.org"])]) |
1078 | - AS_ECHO(["Since the current configuration requires Icemap, this blocks the build."]) | |
1089 | + AS_ECHO(["Since the current configuration requires building Icemap, this blocks"]) | |
1090 | + AS_ECHO(["the build."]) | |
1079 | 1091 | ]) |
1080 | 1092 | # |
1081 | 1093 | # Prognosticate |
@@ -336,7 +336,7 @@ | ||
336 | 336 | \vspace*{\fill} |
337 | 337 | |
338 | 338 | Proofs and pretty-printed source code for Tsukurimashou\\ |
339 | -Copyright © 2011, 2012, 2013, 2014, 2015~~Matthew Skala | |
339 | +Copyright © 2011--2021~~Matthew Skala | |
340 | 340 | |
341 | 341 | This program is free software: you can redistribute it and/or modify |
342 | 342 | it under the terms of the GNU General Public License as published by |
@@ -1,8 +1,8 @@ | ||
1 | -\documentclass[14pt]{extarticle} | |
1 | +\documentclass{article} | |
2 | 2 | |
3 | 3 | % |
4 | 4 | % Demo for Tsukurimashou |
5 | -% Copyright (C) 2011, 2012, 2013, 2015 Matthew Skala | |
5 | +% Copyright (C) 2011, 2012, 2013, 2015, 2021 Matthew Skala | |
6 | 6 | % |
7 | 7 | % This program is free software: you can redistribute it and/or modify |
8 | 8 | % it under the terms of the GNU General Public License as published by |
@@ -32,6 +32,7 @@ | ||
32 | 32 | |
33 | 33 | \input{version.tex} |
34 | 34 | |
35 | +\usepackage[fontsize=13pt]{scrextend} | |
35 | 36 | \usepackage{fontspec} |
36 | 37 | \usepackage[margin=1.25in,top=0.85in]{geometry} |
37 | 38 | \usepackage{wrapfig} |
@@ -215,7 +216,7 @@ | ||
215 | 216 | \vspace*{\fill} |
216 | 217 | |
217 | 218 | Demo for Tsukurimashou\\ |
218 | -Copyright © 2011~~Matthew Skala | |
219 | +Copyright © 2011, 2021~~Matthew Skala | |
219 | 220 | |
220 | 221 | This program is free software: you can redistribute it and/or modify |
221 | 222 | it under the terms of the GNU General Public License as published by |
@@ -2,7 +2,7 @@ | ||
2 | 2 | |
3 | 3 | % |
4 | 4 | % User Manual for Tsukurimashou |
5 | -% Copyright (C) 2011, 2012, 2013, 2014, 2015, 2017 Matthew Skala | |
5 | +% Copyright (C) 2011, 2012, 2013, 2014, 2015, 2017, 2021 Matthew Skala | |
6 | 6 | % |
7 | 7 | % This program is free software: you can redistribute it and/or modify |
8 | 8 | % it under the terms of the GNU General Public License as published by |
@@ -143,14 +143,14 @@ | ||
143 | 143 | \phantomsection\belowpdfbookmark{コピーライト Copyright}{bkm:copyright} |
144 | 144 | |
145 | 145 | This project's English-language home page is at\\ |
146 | -\hspace*{1em}\url{http://tsukurimashou.osdn.jp/index.php.en}.\\ | |
146 | +\hspace*{1em}\url{https://tsukurimashou.osdn.jp/index.php.en}.\\ | |
147 | 147 | このプロジェクトは、日本語のページが\\ |
148 | -\hspace*{1em}\url{http://tsukurimashou.osdn.jp/index.php.ja}です。 | |
148 | +\hspace*{1em}\url{https://tsukurimashou.osdn.jp/index.php.ja}です。 | |
149 | 149 | |
150 | 150 | \vspace*{1in} |
151 | 151 | |
152 | 152 | User manual for Tsukurimashou\\ |
153 | -Copyright © 2011, 2012, 2013, 2014, 2015, 2017\quad Matthew Skala | |
153 | +Copyright © 2011, 2012, 2013, 2014, 2015, 2017, 2021\quad Matthew Skala | |
154 | 154 | |
155 | 155 | This program is free software: you can redistribute it and/or modify |
156 | 156 | it under the terms of the GNU General Public License as published by |
@@ -372,14 +372,14 @@ | ||
372 | 372 | |
373 | 373 | The name ``Tsukurimashou'' could be translated as ``Let's make something!'' |
374 | 374 | |
375 | -From time to time, people ask how they can help with the project. | |
376 | -The one thing this project most needs is your \emph{attention}. I am not | |
377 | -looking for code contributions because of the pedagogical goal (part of the | |
378 | -point is for me to learn kanji by doing all the work); I am not looking for | |
379 | -money as such, although I could certainly use academic employment; but | |
375 | +From time to time, people ask how they can help with the project. The one | |
376 | +thing this project most needs is your \emph{attention}. I am not looking | |
377 | +for code contributions because of the pedagogical goal (part of the point is | |
378 | +for me to learn kanji by doing all the work); I am not looking for money | |
379 | +unless it's enough money to reduce my need for other paid employment; but | |
380 | 380 | public and third-party attention would be very helpful to the project's |
381 | -long-term success. Use it, share it, and above all write about it. | |
382 | -At this point I'm not even sure anybody but me has ever so much as run the | |
381 | +long-term success. Use it, share it, and above all write about it. At this | |
382 | +point I'm not even sure anybody but me has ever so much as run the | |
383 | 383 | Tsukurimashou build process, and that really hurt my motivation to continue |
384 | 384 | maintaining it as a published free software package when other demands in my |
385 | 385 | life pile up. |
@@ -386,9 +386,9 @@ | ||
386 | 386 | |
387 | 387 | The home pages for this project, where you can download the latest releases, |
388 | 388 | browse the source-control repository, and so on, are:\\ |
389 | -\hspace*{1em}\url{http://tsukurimashou.osdn.jp/index.php.en}% | |
389 | +\hspace*{1em}\url{https://tsukurimashou.osdn.jp/index.php.en}% | |
390 | 390 | \quad (English)\\ |
391 | -\hspace*{1em}\url{http://tsukurimashou.osdn.jp/index.php.ja}% | |
391 | +\hspace*{1em}\url{https://tsukurimashou.osdn.jp/index.php.ja}% | |
392 | 392 | \quad(日本語) |
393 | 393 | |
394 | 394 |
@@ -401,76 +401,46 @@ | ||
401 | 401 | \blsubsection{\TsukurimashouVWide |
402 | 402 | のニュース}{What's new in \TsukurimashouVersion?} |
403 | 403 | |
404 | -I said in the version~0.9 ``what's new'' that the future of the project was | |
405 | -uncertain because of my career situation. That was a little over three | |
406 | -years ago. Subsequent to the 0.9 release, I went to Denmark for a couple of | |
407 | -years on a postdoctoral fellowship. I made some effort to work | |
408 | -Tsukurimashou into my academic work, including a couple of publications I | |
409 | -will cite below, but for the most part, work on this project was shelved as | |
410 | -I made it my top priority to find a long-term academic position. | |
404 | +It's been about three and a half years since the version~0.10 release, and | |
405 | +the COVID-19 pandemic, still ongoing as I write this in June of 2021, | |
406 | +affected more than a year of that time. I am still running my synthesizer | |
407 | +business, North Coast Synthesis Ltd. Please visit | |
408 | +\url{https://northcoastsynthesis.com/} for high-quality Eurorack modules and | |
409 | +kits. The business is bringing in enough money for me to live on, but just | |
410 | +barely. I'm still living from one customer order to the next. | |
411 | 411 | |
412 | -My efforts were not successful, and in 2016, after 15 years in academic | |
413 | -research aiming for a professorship, I decided it was time to seek a | |
414 | -different career path. I moved back to Canada and went into the electronic | |
415 | -musical instruments business. Please visit North Coast Synthesis Ltd., at | |
416 | -\url{https://northcoastsynthesis.com/}, for high-quality Eurorack modules | |
417 | -and kits. | |
412 | +My roadmap for Tsukurimashou is still much as it was in the last release. | |
413 | +This version~0.11 covers all the grade-school kanji up to a little past the | |
414 | +halfway mark of Grade Six, now including the 20 ``prefectural name'' | |
415 | +characters that the Japanese school system added to Grade Four after the | |
416 | +time when I set up my checklists. I plan to complete Grade Six in | |
417 | +version~0.12. It only calls for 81 more kanji, plus whatever other ones are | |
418 | +convenient to add along the way. Then, after that, the next release will be | |
419 | +version~1.0, with no specific additional kanji planned, but the chance to | |
420 | +tidy up any issues that might be found in version~0.12 and have a clean | |
421 | +release that is complete in some important sense. | |
418 | 422 | |
419 | -With November 2017, I was considering doing a NaNoWriMo project (``National | |
420 | -Novel Writing Month''---the idea is to write a 50,000-word work of fiction | |
421 | -in 30 days) but decided instead to aim for adding five new kanji to | |
422 | -Tsukurimashou each day and have them be the ones needed for the next | |
423 | -release, namely Grade Five kanji. That actually meant more than five | |
424 | -characters per day on average, as some of the Grade Fives entailed creating | |
425 | -other characters first to use as components. A few days ago I completed | |
426 | -the Grade Five set and have spent the time since, working on other issues | |
427 | -needed to prepare the 0.10 release. | |
423 | +I feel pretty well committed to seeing this project through to the~1.0 | |
424 | +release, but I don't know if I will continue it past there. It has been | |
425 | +about ten years' work now, and it will be at least a little more than that | |
426 | +by the time~1.0 is actually released. A lot has changed in my life over | |
427 | +that time. I haven't been as successful at learning the Japanese language | |
428 | +as I'd hoped, and some of the incentives for me to keep trying no longer | |
429 | +exist. This project also hasn't attracted as much third-party attention as | |
430 | +I had hoped it would, and third-party attention is now even more important | |
431 | +as a reason to continue it, than was earlier the case. | |
428 | 432 | |
429 | -This version~0.10 is being pushed out in a bit of a rush, again, because | |
430 | -after three years with no releases I'd like to confirm that the project is | |
431 | -not dead, and get as much visible progress in this November push as | |
432 | -possible. My roadmap for future releases is to push 0.11 halfway through | |
433 | -Grade Six, 0.12 at the end of Grade Six, and then it'll be the big one: | |
434 | -Tsukurimashou~1.0, with no specific kanji promised beyond Grade Six but a | |
435 | -more polished release addressing issues that may still remain after the 0.12 | |
436 | -release. It is my hope that version~1.0 will be usable enough that I can | |
437 | -sell precompiled binaries of it; I have no illusions of actually making any | |
438 | -real money that way, but maybe some people would like to have an official, | |
439 | -physical DVD of the Tsukurimashou fonts and support the project a little. | |
433 | +But having a font family that can reasonably be used for at least some | |
434 | +practical typesetting, not just demonstration purposes, will be an important | |
435 | +milestone and will open up a lot of possibilities. I still have some hope | |
436 | +that once I push the version~1.0 release I can expect it to be actually | |
437 | +adopted by people other than myself, and that will improve the profile of | |
438 | +the project. I'm also still looking out for ways I might be able to gain | |
439 | +money or professional status from this project, which are the things that | |
440 | +I'd really need to have to make it feasible to keep working past~1.0. | |
440 | 441 | |
441 | -My academic journal article about IDSgrep was published in the | |
442 | -International Journal of Asian Language Processing and you can read | |
443 | -it (open access) at | |
444 | -\url{http://colips.org/journals/volume23/23.2.4_idsgrep-article-final.pdf}. | |
445 | -I also presented a conference paper on algorithmic aspects at the 9th | |
446 | -International Conference on Similarity Search and Applications (SISAP 2016) | |
447 | -in Tokyo, and that one is online (behind a paywall) at | |
448 | -\url{https://link.springer.com/chapter/10.1007/978-3-319-46759-7_11}. | |
442 | +よろしくお願いします。 | |
449 | 443 | |
450 | -This version contains significant revisions to FontAnvil and some of the | |
451 | -other associated software, but those are still too new and experimental for | |
452 | -detailed comment here. FontForge contained a lot of semi-hardcoded tables | |
453 | -of font information, with semi-automated software for generating the C code | |
454 | -to express those tables. I have introduced a new tool of my own called | |
455 | -Icemap for solving that problem in a more principled way, but I'm not up to | |
456 | -writing a detailed document for it yet. Dig around in the source code, and | |
457 | -consider it pre-alpha, if you want. | |
458 | - | |
459 | -Without wanting to get too personal, the next couple of years are going to | |
460 | -be critical for me in the course of my life. I'm not making Tsukurimashou | |
461 | -for money but I do need money; academia didn't work out and it's not clear | |
462 | -electronics manufacturing will either; and any help and support you can give | |
463 | -me is welcome if it is in the form I need. The best thing you can do is buy | |
464 | -my synthesizer modules (that URL again is | |
465 | -\url{https://northcoastsynthesis.com/}); but I realize they are only of use | |
466 | -to a few people. Failing that anything that increases the profile of my | |
467 | -business or this project would be very welcome. Please, circulate that URL | |
468 | -and the URL of the Tsukurimashou home page | |
469 | -(\url{http://tsukurimashou.osdn.jp/}) in your social media, and talk and | |
470 | -write about Tsukurimashou! It is only | |
471 | -because of your continued support that I am able to continue working | |
472 | -on this project. よろしくお願いします。 | |
473 | - | |
474 | 444 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
475 | 445 | |
476 | 446 | \blsubsection{外のプロジェクト}{Other similar projects} |
@@ -629,14 +599,13 @@ | ||
629 | 599 | \blsubsection{デベロップメントロードマップ}{Development roadmap} |
630 | 600 | |
631 | 601 | This version contains all the kyouiku kanji (the ones taught in Japanese |
632 | -elementary school) through Grade 5. The current plan is | |
633 | -to release a minor version after each grade level of kyouiku kanji and one | |
634 | -halfway through each grade level, which will take us up to version 0.12 at | |
635 | -the end of Grade 6. Version 1.0 will probably be a separate version | |
636 | -released shortly after 0.12, with a general clean-up and renovation, but | |
637 | -it's possible I might skip directly from 0.11 to 1.0. | |
602 | +elementary school) through Grade~5, and 100 of the 181 in Grade~6. The | |
603 | +current plan is to release a minor version after each grade level of kyouiku | |
604 | +kanji and one halfway through each grade level, which will take us up to | |
605 | +version 0.12 at the end of Grade~6. Version 1.0 will probably be a separate | |
606 | +version released shortly after 0.12, with a general clean-up and renovation. | |
638 | 607 | |
639 | -There are 1006 kyouiku kanji, though the fonts already contain more than | |
608 | +There are 1026 kyouiku kanji, though the fonts already contain far more than | |
640 | 609 | that number of kanji glyphs because my general practice is to add other |
641 | 610 | glyphs that are convenient to add whenever they come up, regardless of their |
642 | 611 | level. For instance, when I added the ``gate'' radical 門 it was easy to |
@@ -647,39 +616,22 @@ | ||
647 | 616 | makes the end of the kyouiku kanji a good milestone for the first major |
648 | 617 | version number. |
649 | 618 | |
650 | -That may be a few years from now. Progress past that point will be somewhat | |
651 | -dependent on how I feel about the project by then and what my personal | |
652 | -career situation is. My hope is that at that point or before, I'll have the | |
653 | -chance to present this work at one or more conferences and that it will have | |
654 | -attracted some attention. Of course, if I can figure out a way to get paid | |
655 | -to do it that would be nice, but attention is more important. | |
656 | - | |
657 | 619 | Although this is subject to change and cancellation, my current thought is |
658 | 620 | that the next major versions would be 2.0 with the jouyou kanji (taught in |
659 | -high school, a total of 1130 additional glyphs), and 3.0 with the jinmeiyou | |
621 | +high school, a total of 1110 additional glyphs), and 3.0 with the jinmeiyou | |
660 | 622 | kanji (the ``name-only'' kanji, 983 additional glyphs). I don't know how |
661 | 623 | I'd break those up into minor versions, but presumably I'd aim for a similar |
662 | 624 | spacing of about 100 new characters per release. At the 3.0 point, with a |
663 | -little over 3000 kanji, the fonts should be basically complete in the sense | |
664 | -of being usable to write the full Japanese language as most reasonably | |
665 | -competent native readers know it. Many more kanji exist; I don't know how | |
666 | -far I'll want to take this project toward covering them all. For reference, | |
667 | -looking at some other fonts I have handy, IPA Mincho contains 6682 kanji | |
668 | -(probably aiming to cover the JIS~208 standard), and Sazanami Gothic | |
669 | -contains 12202 (probably aiming to cover JIS~212). Those might be | |
670 | -reasonable milestones for 4.0 and 5.0. | |
625 | +little over 3000 specifically-required kanji, the fonts should be basically | |
626 | +complete in the sense of being usable to write the full Japanese language as | |
627 | +most reasonably competent native readers know it. The project already | |
628 | +contains a little over 2900 kanji because I've opportunistically added | |
629 | +lower-priority ones that were easy to add along the way (for instance, some | |
630 | +that are obscure in themselves but used as components of higher-priority | |
631 | +characters). Whether I will actually continue to work on the project past | |
632 | +version~1.0 is undecided at the moment. It will depend on how much | |
633 | +attention the versions up to~1.0 receive. | |
671 | 634 | |
672 | -Figure~\ref{fig:glyph-counts} is a chart of the progress to date. Note the | |
673 | -horizontal axis is labelled by version but scaled by time. Even-numbered | |
674 | -versions tend to take more time because I tend to do the easier characters | |
675 | -in each grade level first. All the glyph counts in these charts are for the | |
676 | -Tsukurimashou (Japanese) fonts alone. The Mandeubsida (Korean) fonts contain | |
677 | -the 11172-glyph block of precomposed syllables, which because they are | |
678 | -algorithmically generated cannot be well compared to the more | |
679 | -manually-created kanji and other glyphs. The Mandeubsida fonts also contain a | |
680 | -few hundred non-precomposed glyphs, beyond the core they share with | |
681 | -Tsukurimashou. | |
682 | - | |
683 | 635 | % glyph counts by release: |
684 | 636 | |
685 | 637 | % version date jdate kanji glyphs LOC |
@@ -693,113 +645,10 @@ | ||
693 | 645 | % 0.8 20130826 2456530 1502 2981 52508 |
694 | 646 | % 0.9 20140817 2456887 1754 3234 56641 |
695 | 647 | % 0.10 20171117 2458075 2353 3831 63345 |
648 | +% 0.11 20210701 2459397 2912 4390 69112 | |
696 | 649 | |
697 | -\begin{figure} | |
698 | -\tikzset{horizontal axis/.style={xscale=0.045,xshift=1.5cm}} | |
699 | -\tikzset{vertical axis/.style={yscale=0.2}} | |
700 | -\centering | |
701 | -\begin{tikzpicture} | |
702 | - \begin{scope}[vertical axis] | |
703 | - \draw[arrows=-triangle 60] (0,-1) -- (0,42); | |
704 | - \foreach \y/\ylbl in | |
705 | - {0/0,10/1000,20/2000,30/3000,40/4000} { | |
706 | - \draw (-0.2,\y) -- (0.2,\y); | |
707 | - \node[anchor=east] at (-0.2,\y) {\scriptsize\ylbl}; | |
708 | - } | |
709 | - \node[rotate=90] at (-2,16) {glyphs}; | |
710 | - \end{scope} | |
711 | - \begin{scope}[horizontal axis] | |
712 | - \draw[arrows=-triangle 60] (-2,0) -- (252.0,0); | |
713 | - \foreach \x/\xlbl in | |
714 | - {1.2/0.1,5.8/0.2,9.2/0.3,25.1/0.4,31.1/0.5,49.6/0.6,76.0/0.7,% | |
715 | - 93.0/0.8,128.7/0.9,247.5/0.10} { | |
716 | - \draw (\x,-0.2) -- (\x,0.2); | |
717 | - \node[anchor=north] at (\x,-0.2) {\scriptsize\xlbl}; | |
718 | - } | |
719 | - \node at (37.5,-1) {version and time}; | |
720 | - \end{scope} | |
721 | - \begin{scope}[horizontal axis,vertical axis] | |
722 | - \node (v1k) at (1.2,0) {漢}; | |
723 | - \node (v2k) at (5.8,1.98) {漢}; | |
724 | - \node (v3k) at (9.2,3.48) {漢}; | |
725 | - \node (v4k) at (25.1,5.73) {漢}; | |
726 | - \node (v5k) at (31.1,7.76) {漢}; | |
727 | - \node (v6k) at (49.6,11.10) {漢}; | |
728 | - \node (v7k) at (75.7,12.91) {漢}; | |
729 | - \node (v8k) at (93.0,15.02) {漢}; | |
730 | - \node (v9k) at (128.7,17.54) {漢}; | |
731 | - \node (v10k) at (247.5,23.53) {漢}; | |
732 | - \node (v1t) at (1.2,13.07) {\labelitemi}; | |
733 | - \node (v2t) at (5.8,16.46) {\labelitemi}; | |
734 | - \node (v3t) at (9.2,17.97) {\labelitemi}; | |
735 | - \node (v4t) at (25.1,20.21) {\labelitemi}; | |
736 | - \node (v5t) at (31.1,22.60) {\labelitemi}; | |
737 | - \node (v6t) at (49.6,25.86) {\labelitemi}; | |
738 | - \node (v7t) at (75.7,27.70) {\labelitemi}; | |
739 | - \node (v8t) at (93.0,29.81) {\labelitemi}; | |
740 | - \node (v9t) at (128.7,32.34) {\labelitemi}; | |
741 | - \node (v10t) at (247.5,38.31) {\labelitemi}; | |
742 | - \draw (v1k) -- (v2k) -- (v3k) -- (v4k) | |
743 | - -- (v5k) -- (v6k) -- (v7k) -- (v8k) -- (v9k) | |
744 | - -- (v10k) node[sloped,above,midway] {kanji}; | |
745 | - \draw (v1t) -- (v2t) -- (v3t) -- (v4t) | |
746 | - -- (v5t) -- (v6t) -- (v7t) -- (v8t) -- (v9t) | |
747 | - -- (v10t) node[sloped,above,midway] {total}; | |
748 | - \end{scope} | |
749 | -\end{tikzpicture} | |
750 | -\caption{Growth of glyph counts} | |
751 | -\label{fig:glyph-counts} | |
752 | -\end{figure} | |
650 | +% lines of code are total lines in mp/*.mp minus mp/mande-*.mp | |
753 | 651 | |
754 | -Figure~\ref{fig:loc-per-glyph} gives a different view of development | |
755 | -progress: the number of lines of code (total lines in mp/*.mp, including | |
756 | -comments and blanks but not including code in other languages and locations; | |
757 | -also excluding mande-*.mp, but still including a few other files from | |
758 | -Mandeubsida) plotted against the total number of glyphs in the main | |
759 | -Tsukurimashou family. | |
760 | - | |
761 | -\begin{figure} | |
762 | -\tikzset{horizontal axis/.style={xscale=0.25}} | |
763 | -\tikzset{vertical axis/.style={yscale=0.15}} | |
764 | -\centering | |
765 | -\begin{tikzpicture} | |
766 | - \begin{scope}[vertical axis] | |
767 | - \draw[arrows=-triangle 60] (0,0) -- (0,72); | |
768 | - \foreach \y/\ylbl in | |
769 | - {0/0,10/10000,20/20000,30/30000,40/40000,50/50000,60/60000,70/70000} { | |
770 | - \draw (-0.2,\y) -- (0.2,\y); | |
771 | - \node[anchor=east] at (-0.2,\y) {\scriptsize\ylbl}; | |
772 | - } | |
773 | - \node[rotate=90] at (-2.2,25) {lines of code}; | |
774 | - \end{scope} | |
775 | - \begin{scope}[horizontal axis] | |
776 | - \draw[arrows=-triangle 60] (0,0) -- (42,0); | |
777 | - \foreach \x/\xlbl in | |
778 | - {0/0,10/1000,20/2000,30/3000,40/4000} { | |
779 | - \draw (\x,-0.2) -- (\x,0.2); | |
780 | - \node[anchor=north] at (\x,-0.2) {\scriptsize\xlbl}; | |
781 | - } | |
782 | - \node at (15,-1.3) {glyphs}; | |
783 | - \end{scope} | |
784 | - \begin{scope}[horizontal axis,vertical axis] | |
785 | - \node (v1) at (13.07,14.944) {\labelitemi}; | |
786 | - \node (v2) at (16.46,21.157) {\labelitemi}; | |
787 | - \node (v3) at (17.97,24.799) {\labelitemi}; | |
788 | - \node (v4) at (20.21,30.148) {\labelitemi}; | |
789 | - \node (v5) at (22.60,36.479) {\labelitemi}; | |
790 | - \node (v6) at (25.86,46.635) {\labelitemi}; | |
791 | - \node (v7) at (27.70,48.879) {\labelitemi}; | |
792 | - \node (v8) at (29.81,52.508) {\labelitemi}; | |
793 | - \node (v9) at (32.34,56.641) {\labelitemi}; | |
794 | - \node (v10) at (38.31,63.345) {\labelitemi}; | |
795 | - \draw (v1) -- (v2) -- (v3) -- (v4) -- (v5) -- (v6) -- (v7) | |
796 | - -- (v8) -- (v9) -- (v10); | |
797 | - \end{scope} | |
798 | -\end{tikzpicture} | |
799 | -\caption{Lines of code per glyph} | |
800 | -\label{fig:loc-per-glyph} | |
801 | -\end{figure} | |
802 | - | |
803 | 652 | \clearpage |
804 | 653 | |
805 | 654 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
@@ -818,31 +667,9 @@ | ||
818 | 667 | \blsubsubsection{METAFONTなど}{METAFONT, etc.} |
819 | 668 | |
820 | 669 | \begin{itemize} |
821 | - \item Metapost (maybe even METAFONT) issue propagated to METATYPE1: | |
822 | - the equation solver has a non-renewable resource of ``independent | |
823 | - variable instance serial numbers'' which are consumed as code executes. | |
824 | - Basically, one is used up permanently every time an assignment statement | |
825 | - executes. Very old versions of Metapost either did not have these, or | |
826 | - allowed the counter to wrap around, and so the solver would produce | |
827 | - incorrect results in long-running programs. At some time before | |
828 | - version 0.641, the solver | |
829 | - mistakes were fixed by the limited serial-number scheme, but | |
830 | - serial numbers would run out and cause a fatal error when they reached | |
831 | - $\textrm{2}^\textrm{\small 25}$. In version 1.501, the limit was | |
832 | - increased to $\textrm{2}^\textrm{\small 31}$. Any sufficiently | |
833 | - long-running Metapost program will eventually die as the limit is | |
834 | - exceeded. Some experimental versions of the Blackletter Lolita | |
835 | - curve-fitter would exceed the $\textrm{2}^\textrm{\small 25}$ limit; the | |
836 | - current experimental version is less computation-intensive, probably | |
837 | - wouldn't exceed $\textrm{2}^\textrm{\small 25}$, and certainly fits | |
838 | - comfortably in $\textrm{2}^\textrm{\small 31}$, but it seems like the | |
839 | - limit should not exist at all. Debugging is hindered by some currently | |
840 | - in progress redesign work on Metapost's data structures, such that (as | |
841 | - of October 2011) the cutting-edge development version leaks memory fast | |
842 | - and crashes for that reason long before the serial numbers can run out | |
843 | - anyway. Memory leaks acknowledged and planned to be fixed by Metapost | |
844 | - maintainer Taco Hoekwater, but it may take a while. I've posted a link | |
845 | - target to track this issue at \url{http://ansuz.sooke.bc.ca/entry/213}. | |
670 | + \item The ``independent variable instance serial numbers'' issue in | |
671 | + Metapost seems to no longer be significant in reasonably recent | |
672 | + versions. As of Tsukurimashou version~0.11, I'm no longer tracking it. | |
846 | 673 | |
847 | 674 | \item METATYPE1 sometimes runs glyph names through the METAFONT |
848 | 675 | tokenizer. At this point, I don't know how essential that is to |
@@ -2274,7 +2101,9 @@ | ||
2274 | 2101 | |
2275 | 2102 | First I will describe building from a source distribution package. If you |
2276 | 2103 | wish to compile from a version-control checkout, then also read the specific |
2277 | -notes about that in Subsection~\ref{sub:version-control}. | |
2104 | +notes about that in Subsection~\ref{sub:version-control}. If you want to | |
2105 | +create distribution packages, follow the procedure described in | |
2106 | +Subsection~\ref{sub:building-distro}. | |
2278 | 2107 | |
2279 | 2108 | Assuming you wish to embark on the adventure of compiling Tsukurimashou, you |
2280 | 2109 | must have at least the following: |
@@ -2288,8 +2117,8 @@ | ||
2288 | 2117 | \item GNU Make 3.82 or later (non-GNU versions will not work; |
2289 | 2118 | earlier versions will not work). |
2290 | 2119 | \item Metapost (this comes with most \TeX/\LaTeX\ installations) |
2291 | - \item An interpreter of PE scripts. FontAnvil is preferred, and included | |
2292 | - with the Tsukurimashou sources. FontForge | |
2120 | + \item An interpreter of PE scripts. FontAnvil is preferred, and is | |
2121 | + included with the Tsukurimashou sources. FontForge | |
2293 | 2122 | will also work, as long as it retains support for ``native'' scripting. |
2294 | 2123 | \end{itemize} |
2295 | 2124 |
@@ -2329,7 +2158,7 @@ | ||
2329 | 2158 | Python. To ensure continued support for Tsukurimashou, I now maintain a |
2330 | 2159 | standalone PE script interpreter called FontAnvil; this should be available |
2331 | 2160 | wherever you got the Tsukurimashou source code, and is the preferred PE |
2332 | -script interpreter for building Tsukurimashou. As of version 0.9, both | |
2161 | +script interpreter for building Tsukurimashou. As of version 0.11, both | |
2333 | 2162 | FontAnvil and FontForge will work, more or less equally well. Continued |
2334 | 2163 | FontForge compatibility in the future is not guaranteed. |
2335 | 2164 |
@@ -2376,11 +2205,11 @@ | ||
2376 | 2205 | |
2377 | 2206 | The build system for Tsukurimashou is fairly elaborate; it may seem like |
2378 | 2207 | overkill, but given that I'm running it on a daily basis over the course of |
2379 | -years, it's important that it should be pleasant for me and efficient in | |
2380 | -time consumption. Thus it defaults to ``silent'' build rules, uses pretty | |
2381 | -ANSI colours, and does a bunch of complicated checks on whether file | |
2382 | -contents (not just modification times) have changed in order to avoid | |
2383 | -expensive dependency rebuilds unless those are really needed, while | |
2208 | +many years, it's important that it should be bulletproof, pleasant for me, | |
2209 | +and efficient in time consumption. Thus it defaults to ``silent'' build | |
2210 | +rules, uses pretty ANSI colours, and does a bunch of complicated checks on | |
2211 | +whether file contents (not just modification times) have changed in order to | |
2212 | +avoid expensive dependency rebuilds unless those are really needed, while | |
2384 | 2213 | triggering them automatically when I add new source files. |
2385 | 2214 | |
2386 | 2215 | One important tip is that if things are failing, you can add ``V=1'' to the |
@@ -2517,18 +2346,17 @@ | ||
2517 | 2346 | |
2518 | 2347 | If you try to do ``make distcheck,'' it will fail if any of the tests fail; |
2519 | 2348 | and the tests probably \emph{will} fail because of the bugs in FontAnvil |
2520 | -spline geometry. A workaround, used in my Tsukurimashou 0.8 distribution | |
2521 | -packages, is to override the options for \texttt{fontlint.pe} as follows: | |
2522 | -\begin{verbatim} | |
2523 | -make DISTCHECK_CONFIGURE_FLAGS='FONTLINT_FLAGS="-w 2,3,5,23"' distcheck | |
2524 | -\end{verbatim} | |
2349 | +spline geometry among other reasons. See the notes in | |
2350 | +Subsection~\ref{sub:building-distro} for workarounds. | |
2525 | 2351 | |
2526 | -The \texttt{DISTCHECK\_CONFIGURE\_FLAGS} variable specifies additional flags | |
2527 | -(actually a command-line fragment) that ``make distcheck'' will pass to | |
2528 | -``configure.'' Then inside that, the \texttt{FONTLINT\_FLAGS} variable | |
2529 | -specifies flags to pass to the font integrity checker. The codes 2, 3, 5, | |
2530 | -and 23 are the errors that I wasn't able to correct with the version of | |
2531 | -FontForge installed on my development system as of the time of the release. | |
2352 | +Some C source code in FontAnvil and IDSgrep needs to be automatically | |
2353 | +generated by Icemap, from data files downloaded from the Unicode Consortium. | |
2354 | +Distribution packages will contain pre-generated versions of these source | |
2355 | +files, so that neither Icemap nor a download is needed. However, if you are | |
2356 | +building from a source control checkout, or possibly if you have Icemap | |
2357 | +installed, the build system will attempt to regenerate these files, and in | |
2358 | +that case, you must run ``make download'' before running ``make'' to get the | |
2359 | +needed input files. | |
2532 | 2360 | |
2533 | 2361 | Don't bother with ``-{}-disable-dependency-tracking''; that is an |
2534 | 2362 | Autotools thing meant for much larger and more softwary packages. It |
@@ -2539,9 +2367,9 @@ | ||
2539 | 2367 | idea. |
2540 | 2368 | |
2541 | 2369 | Autotools encourages the use of a separate build directory, with the |
2542 | -sources remaining inviolate elsewhere, but that is not really | |
2370 | +sources remaining inviolate elsewhere, but that is not | |
2543 | 2371 | recommended for Tsukurimashou. I try to make it pass ``make |
2544 | -dist-check'' right before each release, which implies making separate | |
2372 | +distcheck'' right before each release, which implies making separate | |
2545 | 2373 | build directories work, but if you are building Tsukurimashou from a |
2546 | 2374 | checked-out SVN version, it may or may not work. It's safer |
2547 | 2375 | to build right in the main directory. Even if VPATH builds work, they |
@@ -2559,16 +2387,16 @@ | ||
2559 | 2387 | installation directories, almost none of which are applicable to a package |
2560 | 2388 | of this type, and I took out most of the support for those to reduce the |
2561 | 2389 | cognitive load for users who would otherwise have to think about their |
2562 | -inapplicability. This package doesn't install any executables, libraries, C | |
2563 | -header files, or similar, at all. (Although some of the parasites may...) | |
2564 | -Cross-compilation and executable name munging were removed for the same | |
2565 | -reason; some C programs are compiled for kerning and Type 1 opcode assembly, | |
2566 | -but these are only meant to run on the host system during build, with all | |
2567 | -the installable files being architecture-independent. The hacking I did on | |
2568 | -Autotools means that if you modify the build system such that you would be | |
2569 | -re-running Autotools, it's likely to break unless your version of Autotools | |
2570 | -is close to the 2.65 version I used. The configure script will try to | |
2571 | -detect such a situation and warn you. | |
2390 | +inapplicability. The main Tsukurimashou package doesn't install any | |
2391 | +executables, libraries, C header files, or similar, at all. (Some of the | |
2392 | +parasites do.) Cross-compilation and executable name munging were removed | |
2393 | +for the same reason; some C programs are compiled for kerning and Type 1 | |
2394 | +opcode assembly, but these are only meant to run on the host system during | |
2395 | +build, with all the installable files being architecture-independent. The | |
2396 | +hacking I did on Autotools means that if you modify the build system such | |
2397 | +that you would be re-running Autotools, it's likely to break unless your | |
2398 | +version of Autotools is close to the version I used. The configure | |
2399 | +script will try to detect such a situation and warn you. | |
2572 | 2400 | |
2573 | 2401 | The design of this build system was influenced by Peter Miller's interesting |
2574 | 2402 | article ``Recursive Make Considered Harmful,'' available at |
@@ -2602,8 +2430,8 @@ | ||
2602 | 2430 | be distributed separately and made a dependency of all the other packages |
2603 | 2431 | that use it. A problem with doing that is that which code is or isn't |
2604 | 2432 | shared will vary a lot due to the wide range of different packages that |
2605 | -might want to share some part of the system. Instead, the approach taken as | |
2606 | -of Tsukurimashou 0.7 is to introduce what I call ``parasite packages.'' | |
2433 | +might want to share some part of the system. Instead, the approach | |
2434 | +introduced in Tsukurimashou~0.7 uses what I call ``parasite packages.'' | |
2607 | 2435 | These are sub-packages for Autotools purposes. |
2608 | 2436 | |
2609 | 2437 | Each parasite appears in its own subdirectory of the full Tsukurimashou |
@@ -2643,7 +2471,7 @@ | ||
2643 | 2471 | GPLv3 with font embedding exception. |
2644 | 2472 | |
2645 | 2473 | \item{FontAnvil} A PE script interpreter, for editing fonts under program |
2646 | - control. Overall package GPLv3, some parts also available under | |
2474 | + control. Overall package GPLv3 or later, some parts also available under | |
2647 | 2475 | BSD-style and other licenses. |
2648 | 2476 | |
2649 | 2477 | \item{Genjimon} A set of standalone fonts for the Genjimon symbols, which |
@@ -2708,13 +2536,11 @@ | ||
2708 | 2536 | ./tsukurimashou |
2709 | 2537 | \end{verbatim} |
2710 | 2538 | |
2711 | -OSDN is the preferred repository, but you may instead obtain it from | |
2712 | -Github: | |
2713 | -\begin{verbatim} | |
2714 | -git clone https://github.com/mskala/Tsukurimashou.git | |
2715 | -\end{verbatim} | |
2539 | +Although there may still be a mirror of some version of Tsukurimashou on | |
2540 | +Github, it is out of date and unlikely to be updated. Use the Subversion | |
2541 | +repository. | |
2716 | 2542 | |
2717 | -Either of these commands downloads the sources from the repository and | |
2543 | +The checkout command downloads the sources from the repository and | |
2718 | 2544 | creates a subdirectory called ``tsukurimashou'' in the current directory. |
2719 | 2545 | |
2720 | 2546 | Use autoreconf to build the build system itself: |
@@ -2793,6 +2619,130 @@ | ||
2793 | 2619 | |
2794 | 2620 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
2795 | 2621 | |
2622 | +\blsubsection{頒布のパケージを作って}{Building distribution packages} | |
2623 | +\label{sub:building-distro} | |
2624 | + | |
2625 | +It is not expected that general users of the Tsukurimashou project will have | |
2626 | +any reason to build distribution packages, and I don't encourage attempts | |
2627 | +because of possible confusion with ``official'' packages I prepare myself. | |
2628 | +However, it's worth having some documentation of the process for my own | |
2629 | +future reference and for the benefit of forks. | |
2630 | + | |
2631 | +This project uses Autotools, and it is preferred to use Autotools's ``make | |
2632 | +distcheck'' workflow for creating distribution packages. However, the make | |
2633 | +distcheck workflow depends on doing a VPATH build (that is, with generated | |
2634 | +files in a ``build'' directory separate from the source files) and that does | |
2635 | +not combine well with the multi-step information flow of Tsukurimashou. | |
2636 | +Unlike the typical C program that has clearly delineated source and object | |
2637 | +files, Tsukurimashou's source code is often used to generate files that are | |
2638 | +themselves much like ``source'' code and are processed further, through | |
2639 | +several steps. These are somewhere between source and object code and don't | |
2640 | +naturally fit into the hard division contemplated by Autotools's | |
2641 | +implementation of VPATH builds. | |
2642 | + | |
2643 | +There are also many files, especially those | |
2644 | +related to Icemap-managed data tables in IDSgrep and FontAnvil, which may be | |
2645 | +more like source or more like object files depending on whether the local | |
2646 | +configuration is using Icemap or just using pre-made data tables obtained | |
2647 | +from a distribution package. To work well with VPATH, the system must adapt | |
2648 | +to those files being in different places depending on the current | |
2649 | +configuration. Different branches of the larger project (such as FontAnvil | |
2650 | +and Icemap) depending on each other, creates further complexity as the | |
2651 | +directory layout and build order for sub-packages change depending on the | |
2652 | +style of build. | |
2653 | + | |
2654 | +The overall picture is that you shouldn't attempt a VPATH build except in | |
2655 | +the specific context of building a distribution package as described here. | |
2656 | +VPATH builds will cause warnings throughout the build system and it is | |
2657 | +assumed that if you ignore those warnings, then you think you know what | |
2658 | +you're doing. This is also my own small blow against the annoyance of other | |
2659 | +systems that produce dire warnings, or even refuse to compile at all, in | |
2660 | +\emph{non-}VPATH configurations, because somebody had the idea that use of | |
2661 | +VPATH ought to be encouraged as a general practice for all builds. | |
2662 | + | |
2663 | +Running make distcheck will run the test suites in those parts of the | |
2664 | +system that have them, and will refuse to package if any tests fail. That | |
2665 | +is, in general, the intended behaviour: we don't want to be distributing | |
2666 | +packages that don't work. However, FontAnvil's test suite is a work in | |
2667 | +progress. There are longstanding issues that cause some tests to fail; we | |
2668 | +don't want to remove those tests because they're an important guide to | |
2669 | +things that still need to be fixed; but they are basically harmless and | |
2670 | +should not impair releasing the entire project. Numerical issues in | |
2671 | +FontAnvil also cause some generated fonts to fail the strict validation of | |
2672 | +\texttt{fontlint.pe}, and that can cause several other parts of the system | |
2673 | +to fail testing. | |
2674 | + | |
2675 | +The Tsukurimashou build system in general is intended to work on a wide | |
2676 | +variety of Unix-like systems; that is part of the point of using Autotools. | |
2677 | +However, the distribution packaging workflow in particular is not as | |
2678 | +thoroughly tested on a wide range of systems as the ordinary build process, | |
2679 | +and it may not work well on systems much different from my Slackware Linux | |
2680 | +installation. | |
2681 | + | |
2682 | +To build a distribution of the entire project: start by configuring for a | |
2683 | +complete build, with all the font styles, features, character coverage, and | |
2684 | +parasites enabled. Do a ``make download'' to be sure all the necessary | |
2685 | +Unicode data is in place. Then run the complete build, in the source tree | |
2686 | +(not VPATH!). This should create usable and up-to-date versions of all the | |
2687 | +files that will eventually be distributed. | |
2688 | + | |
2689 | +To run ``make distcheck'' for the entire project and have it work, it is | |
2690 | +necessary that the invocation of configure \emph{inside} distcheck's build | |
2691 | +process be one that will allow distcheck's build process to run and | |
2692 | +distcheck's invocation of the test suite to pass. That requires disabling | |
2693 | +the tests we expect to fail. Use the following command line. | |
2694 | + | |
2695 | +\begin{verbatim} | |
2696 | +make DISTCHECK_CONFIGURE_FLAGS='FONTLINT_FLAGS="-w 2,3,5,23"' | |
2697 | + distcheck_hack=0.5pre distcheck | |
2698 | +\end{verbatim} | |
2699 | + | |
2700 | +Cutting and pasting from the PDF file will probably not work | |
2701 | +because of the use of typographic quotation marks in this manual; you must | |
2702 | +edit them into ASCII quotation marks compatible with your shell. | |
2703 | + | |
2704 | +The DISTCHECK\_CONFIGURE\_FLAGS variable passed to make specifies a command | |
2705 | +line fragment that distcheck will use when invoking configure. The | |
2706 | +FONTLINT\_FLAGS variable (inside DISTCHECK\_CONFIGURE\allowbreak\_FLAGS) | |
2707 | +specifies | |
2708 | +error codes associated with FontAnvil's numerical problems, changing them | |
2709 | +into warnings instead of errors, so that they will not cause test suite | |
2710 | +failures. | |
2711 | + | |
2712 | +There are other problems beyond fontlint errors in FontAnvil's own test | |
2713 | +suite, overridden by the distcheck\_hack variable (outside | |
2714 | +DISTCHECK\allowbreak\_CONFIGURE\_FLAGS). This variable must be set to the | |
2715 | +current version number of the enclosed FontAnvil sources in order to take | |
2716 | +effect, so that the overrides cannot be accidentally applied to other | |
2717 | +releases without a deliberate intention to do so. | |
2718 | + | |
2719 | +A standalone distribution of one of the parasite packages, that is, | |
2720 | +a package that can be used without the rest of Tsukurimashou, will usually | |
2721 | +need to contain some files that would be automatically generated (or at least | |
2722 | +copied) when building the whole project. For instance, the basic Metapost | |
2723 | +infrastructure code for generating fonts needs to be included in every | |
2724 | +package, but in a source control checkout there should be only one copy of | |
2725 | +it, and parasite packages automatically copy the master version to | |
2726 | +themselves when it is updated. Getting this right in a standalone package | |
2727 | +is a bit tricky. | |
2728 | + | |
2729 | +To build a standalone distribution of a parasite package, start by building | |
2730 | +a complete version inside the project source tree. Run configure in the | |
2731 | +parasite's directory with -{}-enable-parasite=yes (or without this option, | |
2732 | +because it should be the default), and build. Then run configure again, with | |
2733 | +-{}-enable-parasite=no and without doing a ``make clean.'' After that it | |
2734 | +should be possible to do ``make distcheck'' and have it create a working | |
2735 | +standalone package. Use the test-overriding options described for the | |
2736 | +whole-project package above, as necessary to get distcheck to stop | |
2737 | +complaining. | |
2738 | + | |
2739 | +Once a standalone package is built, it should be possible to use it, and | |
2740 | +generate further distribution packages from it, without further reference to | |
2741 | +the rest of the Tsukurimashou sources, though stuff like rebuilding the | |
2742 | +Icemap-managed data tables will obviously require the relevant software. | |
2743 | + | |
2744 | +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | |
2745 | + | |
2796 | 2746 | \blsubsection{ツールの文書化}{Tool documentation} |
2797 | 2747 | |
2798 | 2748 | There are a number of scripts included in the \texttt{tools/} subdirectory. |
@@ -2815,6 +2765,21 @@ | ||
2815 | 2765 | exceptions and special cases included to make it do the right thing with |
2816 | 2766 | macros defined in multiple places as a result of style overrides, and so on. |
2817 | 2767 | |
2768 | +\item \texttt{autolr}: automatically generate framework code for kanji that | |
2769 | +are left-right combinations of existing components. Note that the code | |
2770 | +generated by this utility will in general \emph{not} be usable as is; it is | |
2771 | +intended only as a starting point for human editing, to automate the | |
2772 | +repetitive work of getting character codes properly entered in decimal and | |
2773 | +hex, and so on. Run it with four arguments, from the root of the | |
2774 | +Tsukurimashou source tree: the (single character) component to put on the | |
2775 | +left; the prefix of the IDSgrep EIDS for dictionary entries with that | |
2776 | +component on the left; the (decimal numeric) X-coordinate for the division | |
2777 | +between the left and right sides; and the (decimal numeric) amount of overlap. | |
2778 | +The utility automatically runs IDSgrep to search for kanji with the | |
2779 | +specified structure and not already in Tsukurimashou, and generates to | |
2780 | +standard output some Metapost code that can be usefully edited to describe | |
2781 | +the new characters. | |
2782 | + | |
2818 | 2783 | \item \texttt{build-plot}: generate a plot (using GNUplot, which is |
2819 | 2784 | required) of the current progress of a full build. This was hacked in at |
2820 | 2785 | the last minute to fill a specific need during the rather hurried |
@@ -53,7 +53,7 @@ | ||
53 | 53 | |
54 | 54 | # SILENT BUILD BLINKENLIGHTS |
55 | 55 | |
56 | -TSU_V_REDIR=$(if $(AM_V_at),>& /dev/null) | |
56 | +TSU_V_REDIR=$(if $(AM_V_at),> /dev/null 2>&1) | |
57 | 57 | |
58 | 58 | if COND_COLOUR |
59 | 59 | escchar:=$(strip $(shell echo x | tr 'x' '\033')) |
@@ -236,8 +236,7 @@ | ||
236 | 236 | # "Makefile" was used before we had things we wanted to include for real |
237 | 237 | # BUILT_SOURCES = Makefile |
238 | 238 | BUILT_SOURCES = \ |
239 | - fontanvil/feascan.c fontanvil/feascan.h \ | |
240 | - $(ICEMAP_INPUTS:.im=.c) $(ICEMAP_INPUTS:.im=.h) | |
239 | + fontanvil/feascan.c fontanvil/feascan.h | |
241 | 240 | |
242 | 241 | bin_PROGRAMS = fontanvil/fontanvil |
243 | 242 |
@@ -405,32 +404,38 @@ | ||
405 | 404 | download: |
406 | 405 | $(top_srcdir)/tools/dlunicode @UNICODE_URL@ |
407 | 406 | |
408 | -if COND_DOWNLOAD | |
409 | - | |
410 | -dat/Unihan_OtherMappings.txt: download | |
411 | - | |
412 | -endif | |
413 | - | |
414 | 407 | if COND_ICEMAP |
415 | 408 | |
416 | -%.h:%.im $(ICEMAP) | |
417 | - $(TSU_V_ICE)'$(ICEMAP)' -H$@ -C$(patsubst %.h,%.c,$@) $< $(TSU_V_REDIR) | |
409 | +fontanvil/hinttab.h fontanvil/hinttab.c @grouped@: \ | |
410 | + fontanvil/hinttab.im $(filter-out no,$(ICEMAP)) | |
411 | + $(TSU_V_ICE)'$(ICEMAP)' \ | |
412 | + -H$(patsubst %.c,%.h,$(patsubst $(VPATH)/%,%,$@)) \ | |
413 | + -C$(patsubst %.h,%.c,$(patsubst $(VPATH)/%,%,$@)) \ | |
414 | + $< $(TSU_V_REDIR) | |
418 | 415 | |
419 | -fontanvil/hinttab.h: fontanvil/hinttab.im | |
420 | -fontanvil/hinttab.c: fontanvil/hinttab.h | |
416 | +fontanvil/macenctab.h fontanvil/macenctab.c @grouped@: \ | |
417 | + fontanvil/macenctab.im $(filter-out no,$(ICEMAP)) | |
418 | + $(TSU_V_ICE)'$(ICEMAP)' \ | |
419 | + -H$(patsubst %.c,%.h,$(patsubst $(VPATH)/%,%,$@)) \ | |
420 | + -C$(patsubst %.h,%.c,$(patsubst $(VPATH)/%,%,$@)) \ | |
421 | + $< $(TSU_V_REDIR) | |
421 | 422 | |
422 | -fontanvil/macenctab.h: fontanvil/macenctab.im | |
423 | -fontanvil/macenctab.c: fontanvil/macenctab.h | |
424 | - | |
425 | -fontanvil/nonmactab.h: fontanvil/nonmactab.im \ | |
423 | +fontanvil/nonmactab.h fontanvil/nonmactab.c @grouped@: \ | |
424 | + fontanvil/nonmactab.im $(filter-out no,$(ICEMAP)) \ | |
426 | 425 | dat/texbase.dat dat/gb2312.dat dat/glyphlist.txt |
427 | 426 | $(AM_V_at)if test '!' "x$(VPATH)" = "x" ; then \ |
428 | - cp $(mvp)/dat/glyphlist.txt dat/ ; fi | |
429 | - $(TSU_V_ICE)'$(ICEMAP)' -H$@ -C$(patsubst %.h,%.c,$@) $< $(TSU_V_REDIR) | |
430 | -fontanvil/nonmactab.c: fontanvil/nonmactab.h | |
427 | + ( cp $(mvp)/dat/glyphlist.txt dat/ || true ) ; fi | |
428 | + $(TSU_V_ICE)'$(ICEMAP)' \ | |
429 | + -H$(patsubst %.c,%.h,$(patsubst $(VPATH)/%,%,$@)) \ | |
430 | + -C$(patsubst %.h,%.c,$(patsubst $(VPATH)/%,%,$@)) \ | |
431 | + $< $(TSU_V_REDIR) | |
431 | 432 | |
432 | -fontanvil/unicodelib.h: fontanvil/unicodelib.im | |
433 | -fontanvil/unicodelib.c: fontanvil/unicodelib.h | |
433 | +fontanvil/unicodelib.h fontanvil/unicodelib.c @grouped@: \ | |
434 | + fontanvil/unicodelib.im $(filter-out no,$(ICEMAP)) | |
435 | + $(TSU_V_ICE)'$(ICEMAP)' \ | |
436 | + -H$(patsubst %.c,%.h,$(patsubst $(VPATH)/%,%,$@)) \ | |
437 | + -C$(patsubst %.h,%.c,$(patsubst $(VPATH)/%,%,$@)) \ | |
438 | + $< $(TSU_V_REDIR) | |
434 | 439 | |
435 | 440 | if COND_KPSEWHICH |
436 | 441 | dat/8r.enc: @eightrenc@ |
@@ -451,8 +456,14 @@ | ||
451 | 456 | $(AM_V_at)'$(PERL)' -n \ |
452 | 457 | -e 'printf "%02X%02X\t%s\n",$$2+161,$$3+161,$$1 ' \ |
453 | 458 | -e 'if /U\+([0-9a-f]{4})\tkGB0\t(\d\d)(\d\d)/i;' $< > $@ |
459 | + | |
454 | 460 | endif |
455 | 461 | |
462 | +# additional dependencies that Autotools doesn't seem to pick up in a | |
463 | +# fresh version-control checkout | |
464 | + | |
465 | +fontanvil/encoding.o: fontanvil/nonmactab.h | |
466 | + | |
456 | 467 | ############################################################################ |
457 | 468 | |
458 | 469 | # PE SCRIPTS |
@@ -478,7 +489,7 @@ | ||
478 | 489 | |
479 | 490 | # PDF DOCUMENTATION |
480 | 491 | |
481 | -doc/fontanvil.pdf: $(texfiles) doc/mitsuba.cls \ | |
492 | +doc/fontanvil.pdf: $(texfiles) $(abs_builddir)/doc/mitsuba.cls \ | |
482 | 493 | doc/quixote-dore.jpg doc/quixote-daumier.jpg |
483 | 494 | $(AM_V_at)rm -f fontanvil.aux |
484 | 495 | $(AM_V_at)if test '!' "$(realpath $(mvp)/doc)" = \ |
@@ -566,9 +577,9 @@ | ||
566 | 577 | |
567 | 578 | if COND_PARASITE |
568 | 579 | |
569 | -doc/mitsuba.cls: ../mitsuba/mitsuba.cls | |
580 | +$(abs_builddir)/doc/mitsuba.cls: ../mitsuba/mitsuba.cls | |
570 | 581 | $(MKDIR_P) doc |
571 | - $(TSU_V_CP) cp $< $@ | |
582 | + $(TSU_V_CP) cp $(mvp)/../mitsuba/mitsuba.cls $@ | |
572 | 583 | |
573 | 584 | m4/%.m4: ../m4/%.m4 |
574 | 585 | $(TSU_V_CP) cp $< $@ |
@@ -585,6 +596,7 @@ | ||
585 | 596 | m4/tsu_bad_paths.m4: ../m4/tsu_bad_paths.m4 |
586 | 597 | m4/tsu_colourise.m4: ../m4/tsu_colourise.m4 |
587 | 598 | m4/tsu_fix_makefile.m4: ../m4/tsu_fix_makefile.m4 |
599 | +m4/tsu_grouped_targets.m4: ../m4/tsu_grouped_targets.m4 | |
588 | 600 | |
589 | 601 | dat/UnicodeData.txt: $(wildcard ../idsgrep/UnicodeData.txt) |
590 | 602 | $(MKDIR_P) dat |
@@ -594,6 +606,14 @@ | ||
594 | 606 | test-driver: ../test-driver |
595 | 607 | $(TSU_V_CP) cp $< $@ |
596 | 608 | |
609 | +else | |
610 | + | |
611 | +$(abs_builddir)/doc/mitsuba.cls: doc/mitsuba.cls | |
612 | + $(MKDIR_P) doc | |
613 | + $(AM_V_at)if test '!' "$(realpath $(mvp)/doc)" = \ | |
614 | + "$(realpath $(abs_builddir)/doc)" ; then \ | |
615 | + cp $(mvp)/doc/mitsuba.cls $(abs_builddir)/doc/ ; fi | |
616 | + | |
597 | 617 | endif |
598 | 618 | |
599 | 619 | ############################################################################ |
@@ -138,15 +138,15 @@ | ||
138 | 138 | AC_CONFIG_MACRO_DIR([m4]) |
139 | 139 | AC_CANONICAL_BUILD |
140 | 140 | AC_CANONICAL_HOST |
141 | -AC_REVISION([$Id: configure.ac 8799 2021-04-24 14:18:02Z mskala $]) | |
142 | -AC_COPYRIGHT([Copyright (C) 2014, 2015 Matthew Skala]) | |
143 | -AC_SUBST([release_date],["December 8, 2015"]) | |
141 | +AC_REVISION([$Id: configure.ac 9086 2021-06-29 17:48:34Z mskala $]) | |
142 | +AC_COPYRIGHT([Copyright (C) 2014, 2015, 2021 Matthew Skala]) | |
143 | +AC_SUBST([release_date],["July 1, 2021"]) | |
144 | 144 | # this must be early so it will happen before depfiles |
145 | 145 | TSU_FIX_MAKEFILE([], |
146 | 146 | [if test '!' "x$ICEMAP" = "x" ; then "$PERL" -i -pe \ |
147 | 147 | 's/^(@<:@a-z\-@:>@+:) (\$\(BUILT_SOURCES\))/'\ |
148 | 148 | '\1\n\t@\$(MAKE) -q \2 || \$(MAKE) \$(AM_MAKEFLAGS) \2/;' Makefile ; fi], |
149 | - [ICEMAP=$ICEMAP]) | |
149 | + []) | |
150 | 150 | AM_SILENT_RULES |
151 | 151 | AC_USE_SYSTEM_EXTENSIONS |
152 | 152 | # |
@@ -475,6 +475,7 @@ | ||
475 | 475 | # Checks for system services |
476 | 476 | # |
477 | 477 | AC_SYS_LONG_FILE_NAMES |
478 | +TSU_GROUPED_TARGETS([have_grouped_targets=yes],[have_grouped_targets=no]) | |
478 | 479 | AX_AM_JOBSERVER |
479 | 480 | AS_IF([test '!' "x$KPSEWHICH" = "x"],[eightrenc=`"$KPSEWHICH" 8r.enc`]) |
480 | 481 | AC_SUBST([eightrenc]) |
@@ -499,11 +500,11 @@ | ||
499 | 500 | AS_IF([test "x$enable_debug" = xyes], |
500 | 501 | [CFLAGS="$CFLAGS -g -O0" ; CPPFLAGS="$CPPFLAGS -g -O0"]) |
501 | 502 | # |
502 | -AC_ARG_ENABLE([download], | |
503 | - [AS_HELP_STRING([--enable-download=[yes|no]], | |
504 | - [automatically download Unicode data from UNICODE_URL [no]])], | |
505 | - [], | |
506 | - [enable_download=no]) | |
503 | +AC_ARG_ENABLE([icemap], | |
504 | + [AS_HELP_STRING([--enable-icemap], | |
505 | + [(re-)generate table code with Icemap [auto]])], | |
506 | + [], | |
507 | + [enable_icemap=auto]) | |
507 | 508 | # |
508 | 509 | AC_ARG_ENABLE([parasite], |
509 | 510 | [AS_HELP_STRING([--enable-parasite=[yes|no|auto]], |
@@ -526,7 +527,17 @@ | ||
526 | 527 | [],[tsu_colour=no]) |
527 | 528 | AM_CONDITIONAL([COND_COLOUR],[test '!' "$tsu_colour" = no]) |
528 | 529 | # |
529 | -AM_CONDITIONAL([COND_DOWNLOAD],[test '!' "$enable_download" = no]) | |
530 | +AS_IF([test "x$enable_icemap" = "xauto"], | |
531 | + [AC_MSG_CHECKING([whether to automatically enable Icemap]) | |
532 | + enable_icemap=no | |
533 | + m4_foreach_w([imcheckpath],[hinttab macenctab nonmactab unicodelib],[ | |
534 | + AS_IF([test '!' -s fontanvil/imcheckpath.c],[enable_icemap=yes]) | |
535 | + AS_IF([test '!' -s fontanvil/imcheckpath.h],[enable_icemap=yes]) | |
536 | + ]) | |
537 | + AS_IF([pwd | $GREP -q _build/sub],[enable_icemap=no]) | |
538 | + AC_MSG_RESULT([$enable_icemap]) | |
539 | + ]) | |
540 | +AM_CONDITIONAL([COND_ICEMAP],[test '!' "$enable_icemap" = no]) | |
530 | 541 | # |
531 | 542 | AS_IF([test "x$enable_silent_rules" = "x"], |
532 | 543 | [enable_silent_rules=yes |
@@ -547,14 +558,12 @@ | ||
547 | 558 | AM_CONDITIONAL([COND_PARASITE],[test "x$enable_parasite" = "xyes"]) |
548 | 559 | AM_COND_IF([COND_PARASITE], |
549 | 560 | [AC_MSG_RESULT([yes]) |
550 | - AS_IF([test "x$ICEMAP" = "x"], | |
561 | + AS_IF([test "x$ICEMAP" = "x" && test '!' "x$enable_icemap" = "xno"], | |
551 | 562 | [AC_MSG_WARN([Depending on locally-built Icemap]) |
552 | - ICEMAP=$PWD/../icemap/icemap]) | |
563 | + ICEMAP=`realpath $PWD/../icemap/icemap`]) | |
553 | 564 | parasite=yes], |
554 | 565 | [parasite=no]) |
555 | 566 | AC_SUBST([parasite]) |
556 | -AS_IF([test "x$ICEMAP" = "x"],[ICEMAP=no]) | |
557 | -AM_CONDITIONAL([COND_ICEMAP],[test '!' "x$ICEMAP" = "xno"]) | |
558 | 567 | # |
559 | 568 | ############################################################################ |
560 | 569 | # |
@@ -613,12 +622,6 @@ | ||
613 | 622 | AS_ECHO_N([" http://gnu.org/software/automake/"])], |
614 | 623 | [TSU_COLOURISE([yes],[2])]) |
615 | 624 | AS_ECHO([]) |
616 | - AS_ECHO_N(["icemap "]) | |
617 | - AS_IF([test "x$ICEMAP" = "x"], | |
618 | - [TSU_COLOURISE([no],[1]) | |
619 | - AS_ECHO_N([" http://tsukurimashou.osdn.jp/"])], | |
620 | - [TSU_COLOURISE([yes],[2])]) | |
621 | - AS_ECHO([]) | |
622 | 625 | AS_ECHO_N(["lex "]) |
623 | 626 | AS_IF([$LEX --version > /dev/null 2> /dev/null], |
624 | 627 | [TSU_COLOURISE([yes],[2])], |
@@ -650,6 +653,12 @@ | ||
650 | 653 | AS_ECHO_N([" https://tsukurimashou.osdn.jp/"])], |
651 | 654 | [TSU_COLOURISE([yes],[2])])]) |
652 | 655 | AS_ECHO([]) |
656 | +AS_ECHO_N(["icemap "]) | |
657 | + AS_IF([test "x$ICEMAP" = "x"], | |
658 | + [TSU_COLOURISE([no],[3]) | |
659 | + AS_ECHO_N([" https://tsukurimashou.osdn.jp/"])], | |
660 | + [TSU_COLOURISE([yes],[2])]) | |
661 | + AS_ECHO([]) | |
653 | 662 | AS_ECHO_N(["libjpeg "]) |
654 | 663 | AS_IF([test "x$with_libjpeg" = "xno"], |
655 | 664 | [TSU_COLOURISE([no],[3]) |
@@ -711,6 +720,18 @@ | ||
711 | 720 | [TSU_COLOURISE([yes],[2])]) |
712 | 721 | AS_ECHO([]) |
713 | 722 | AS_ECHO([]) |
723 | +AS_IF([test '!' "x$enable_jobserver" = "xno"], | |
724 | + [AS_IF([test "x$have_grouped_targets" = "xno"], | |
725 | + [AS_ECHO([]) | |
726 | + AS_ECHO(["Warning: parallel build jobs are enabled, but your Make does not seem"]) | |
727 | + AS_ECHO(["to support the \"grouped targets\" feature introduced in GNU Make 4.3."]) | |
728 | + AS_ECHO(["In this situation there is a race condition that may possibly cause"]) | |
729 | + AS_ECHO(["corruption of files if two simultaneous build jobs attempt to invoke"]) | |
730 | + AS_ECHO(["the same Make recipe at the same time. In practice, the risk of file"]) | |
731 | + AS_ECHO(["corruption is very small, so this configuration is allowed; but it"]) | |
732 | + AS_ECHO(["would be preferable to upgrade Make to a version with the \"grouped"]) | |
733 | + AS_ECHO(["targets\" feature to remove doubt; and you will probably need to do"]) | |
734 | + AS_ECHO(["that in order to successfully build distribution packages."])])]) | |
714 | 735 | AS_IF([test "x$has_bad_paths" = "xyes"], |
715 | 736 | [AS_ECHO([]) |
716 | 737 | AS_ECHO(["The following pathnames contain illegal characters, such as spaces:"]) |
@@ -0,0 +1,52 @@ | ||
1 | +# | |
2 | +# SYNOPSIS | |
3 | +# | |
4 | +# TSU_GROUPED_TARGETS([run-if-true],[run-if-false]) | |
5 | +# | |
6 | +# DESCRIPTION | |
7 | +# | |
8 | +# Check whether Make supports invoking a recipe only once to build | |
9 | +# multiple targets with the "grouped targets" feature and "&:" syntax. | |
10 | +# This was a feature introduced in GNU Make 4.3, but we are testing | |
11 | +# the feature itself rather than the Make version. | |
12 | +# | |
13 | +# If Make supports grouped targets, then the run-if-true code is | |
14 | +# executed. Otherwise, the run-if-false code is executed. | |
15 | +# | |
16 | +# The substitution variable "grouped" is set to "&" if Make supports | |
17 | +# grouped targets and to the empty string if not; this allows use of | |
18 | +# the syntax "@grouped@:" to write recipes that will be grouped if | |
19 | +# possible and not alarming to Make when the feature doesn't exist. | |
20 | +# | |
21 | +# LICENSE | |
22 | +# | |
23 | +# This macro is released to the public domain by its author, | |
24 | +# Matthew Skala <mskala@ansuz.sooke.bc.ca>. | |
25 | + | |
26 | +#serial 1 | |
27 | + | |
28 | +AC_DEFUN([TSU_GROUPED_TARGETS], [ | |
29 | + AC_REQUIRE([AC_PROG_GREP]) | |
30 | + AC_REQUIRE([AC_PROG_MAKE_SET]) | |
31 | + AC_MSG_CHECKING([whether Make supports grouped targets]) | |
32 | + : "${TMPDIR:=/tmp}" | |
33 | + { | |
34 | + dir=`(umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null` && | |
35 | + test -d "$dir" | |
36 | + } || { | |
37 | + dir=$TMPDIR/foo$$-$RANDOM | |
38 | + (umask 077 && mkdir "$dir") | |
39 | + } | |
40 | + echo 'foo bar &: Makefile' > $dir/Makefile | |
41 | + echo ' @echo YEAH' >> $dir/Makefile | |
42 | + _make_gt_result=`$am_make -C $dir foo bar | $GREP YEAH` | |
43 | + rm -rf $dir | |
44 | + AC_SUBST([grouped],[]) | |
45 | + AS_IF([test "x$_make_gt_result" = "xYEAH"], | |
46 | + [AC_MSG_RESULT([yes]) | |
47 | + grouped='&' | |
48 | + $1], | |
49 | + [AC_MSG_RESULT([no]) | |
50 | + grouped='' | |
51 | + $2]) | |
52 | +]) |
@@ -1,6 +1,6 @@ | ||
1 | 1 | #!/usr/bin/perl |
2 | 2 | |
3 | -exit(77) if $ENV{'distcheck_hack'} eq "0.4"; | |
3 | +exit(77) if $ENV{'distcheck_hack'} eq "0.5pre"; | |
4 | 4 | |
5 | 5 | $fail=0; |
6 | 6 |
@@ -61,7 +61,7 @@ | ||
61 | 61 | |
62 | 62 | # SILENT BUILD BLINKENLIGHTS |
63 | 63 | |
64 | -TSU_V_REDIR=$(if $(AM_V_at),>& /dev/null) | |
64 | +TSU_V_REDIR=$(if $(AM_V_at),> /dev/null 2>&1) | |
65 | 65 | |
66 | 66 | if COND_COLOUR |
67 | 67 | escchar:=$(strip $(shell echo x | tr 'x' '\033')) |
@@ -2,7 +2,7 @@ | ||
2 | 2 | |
3 | 3 | # |
4 | 4 | # Configuration source for Genjimon fonts |
5 | -# Copyright (C) 2011, 2012, 2017 Matthew Skala | |
5 | +# Copyright (C) 2011, 2012, 2017, 2021 Matthew Skala | |
6 | 6 | # |
7 | 7 | # This program is free software: you can redistribute it and/or modify |
8 | 8 | # it under the terms of the GNU General Public License as published by |
@@ -197,9 +197,9 @@ | ||
197 | 197 | parallel-tests silent-rules]) |
198 | 198 | AC_CONFIG_SRCDIR([genjimon-black.mp]) |
199 | 199 | AC_CONFIG_MACRO_DIR([m4]) |
200 | -AC_REVISION([$Id: configure.ac 8721 2021-03-28 15:29:20Z mskala $]) | |
201 | -AC_COPYRIGHT([Copyright (C) 2011, 2012 Matthew Skala]) | |
202 | -AC_SUBST([release_date],["March 7, 2013"]) | |
200 | +AC_REVISION([$Id: configure.ac 9071 2021-06-27 03:00:17Z mskala $]) | |
201 | +AC_COPYRIGHT([Copyright (C) 2011, 2012, 2021 Matthew Skala]) | |
202 | +AC_SUBST([release_date],["July 1, 2021"]) | |
203 | 203 | # this must be early so it will happen before depfiles |
204 | 204 | TSU_FIX_MAKEFILE |
205 | 205 | AM_SILENT_RULES |
@@ -2,9 +2,9 @@ | ||
2 | 2 | |
3 | 3 | \usepackage{bigstrut} |
4 | 4 | |
5 | -\title{Genjimon fonts, v0.2} | |
5 | +\title{Genjimon fonts, v0.3pre} | |
6 | 6 | \author{Matthew Skala} |
7 | -\date{October 2, 2012} | |
7 | +\date{July 1, 2021} | |
8 | 8 | |
9 | 9 | \newfontface\genjiface[Scale=1.1,ExternalLocation]{GenjimonMedium.ttf} |
10 | 10 | \newcommand\genji[1]{{\genjiface #1}} |
@@ -52,7 +52,7 @@ | ||
52 | 52 | |
53 | 53 | # SILENT BUILD BLINKENLIGHTS |
54 | 54 | |
55 | -TSU_V_REDIR=$(if $(AM_V_at),>& /dev/null) | |
55 | +TSU_V_REDIR=$(if $(AM_V_at),> /dev/null 2>&1) | |
56 | 56 | |
57 | 57 | if COND_COLOUR |
58 | 58 | escchar:=$(strip $(shell echo x | tr 'x' '\033')) |
@@ -122,9 +122,9 @@ | ||
122 | 122 | AC_CONFIG_SRCDIR([icemap.c]) |
123 | 123 | AC_CONFIG_HEADERS([config.h]) |
124 | 124 | AC_CONFIG_MACRO_DIR([m4]) |
125 | -AC_REVISION([$Id: configure.ac 8755 2021-04-06 02:23:52Z mskala $]) | |
126 | -AC_COPYRIGHT([Copyright (C) 2014 Matthew Skala]) | |
127 | -AC_SUBST([release_date],["November 1, 2014"]) | |
125 | +AC_REVISION([$Id: configure.ac 9071 2021-06-27 03:00:17Z mskala $]) | |
126 | +AC_COPYRIGHT([Copyright (C) 2014, 2021 Matthew Skala]) | |
127 | +AC_SUBST([release_date],["July 1, 2021"]) | |
128 | 128 | # this must be early so it will happen before depfiles |
129 | 129 | TSU_FIX_MAKEFILE |
130 | 130 | AM_SILENT_RULES |
@@ -25,7 +25,7 @@ | ||
25 | 25 | \vspace*{1in} |
26 | 26 | |
27 | 27 | Icemap user manual\\ |
28 | -Copyright \copyright\ 2015\quad Matthew Skala | |
28 | +Copyright \copyright\ 2015, 2021\quad Matthew Skala | |
29 | 29 | |
30 | 30 | \vspace{\baselineskip} |
31 | 31 |
@@ -52,7 +52,7 @@ | ||
52 | 52 | |
53 | 53 | # SILENT BUILD BLINKENLIGHTS |
54 | 54 | |
55 | -TSU_V_REDIR=$(if $(AM_V_at),>& /dev/null) | |
55 | +TSU_V_REDIR=$(if $(AM_V_at),> /dev/null 2>&1) | |
56 | 56 | |
57 | 57 | if COND_COLOUR |
58 | 58 | escchar:=$(strip $(shell echo x | tr 'x' '\033')) |
@@ -316,19 +316,12 @@ | ||
316 | 316 | download-ud: |
317 | 317 | -wget -N -nd @UNICODE_URL@UNIDATA/UnicodeData.txt |
318 | 318 | |
319 | -if COND_DOWNLOAD | |
320 | -EastAsianWidth.txt: download-eaw | |
321 | - | |
322 | -UnicodeData.txt: download-ud | |
323 | -endif | |
324 | - | |
325 | 319 | cook.o: widthtab.h |
326 | 320 | |
327 | 321 | if COND_ICEMAP |
328 | -widthtab.h: widthtab.im $(ICEMAP) EastAsianWidth.txt UnicodeData.txt | |
322 | +widthtab.c widthtab.h @grouped@: \ | |
323 | + widthtab.im $(ICEMAP) EastAsianWidth.txt UnicodeData.txt | |
329 | 324 | $(ICEMAP) $< |
330 | - | |
331 | -widthtab.c: widthtab.h | |
332 | 325 | endif |
333 | 326 | |
334 | 327 | ############################################################################ |
@@ -362,6 +355,7 @@ | ||
362 | 355 | m4/tsu_bad_paths.m4: ../m4/tsu_bad_paths.m4 |
363 | 356 | m4/tsu_colourise.m4: ../m4/tsu_colourise.m4 |
364 | 357 | m4/tsu_fix_makefile.m4: ../m4/tsu_fix_makefile.m4 |
358 | +m4/tsu_grouped_targets.m4: ../m4/tsu_grouped_targets.m4 | |
365 | 359 | |
366 | 360 | UnicodeData.txt: $(wildcard ../fontanvil/dat/UnicodeData.txt) |
367 | 361 | $(TSU_V_CP) if test -s ../fontanvil/dat/UnicodeData.txt ; \ |
@@ -165,9 +165,9 @@ | ||
165 | 165 | AC_CONFIG_SRCDIR([idsgrep.c]) |
166 | 166 | AC_CONFIG_HEADERS([config.h]) |
167 | 167 | AC_CONFIG_MACRO_DIR([m4]) |
168 | -AC_REVISION([$Id: configure.ac 8799 2021-04-24 14:18:02Z mskala $]) | |
168 | +AC_REVISION([$Id: configure.ac 9089 2021-06-30 16:44:07Z mskala $]) | |
169 | 169 | AC_COPYRIGHT([Copyright (C) 2012, 2013, 2014, 2020, 2021 Matthew Skala]) |
170 | -AC_SUBST([release_date],["March 29, 2021"]) | |
170 | +AC_SUBST([release_date],["July 1, 2021"]) | |
171 | 171 | # this must be early so it will happen before depfiles |
172 | 172 | TSU_FIX_MAKEFILE |
173 | 173 | AM_SILENT_RULES |
@@ -196,7 +196,6 @@ | ||
196 | 196 | AS_IF([test "x$ICEMAP" = "x"], |
197 | 197 | [AC_PATH_PROG([ICEMAP],[icemap],[],[$PATH:$PWD/../icemap])]) |
198 | 198 | AS_IF([test "x$ICEMAP" = "xno"],[ICEMAP=]) |
199 | -AM_CONDITIONAL([COND_ICEMAP],[test '!' "x$ICEMAP" = "x"]) | |
200 | 199 | AC_PATH_PROG([ICONV],[iconv]) |
201 | 200 | AC_ARG_VAR([KLEKNEV],[Kleknev]) |
202 | 201 | AS_IF([test "x$KLEKNEV" = "x"], |
@@ -272,6 +271,7 @@ | ||
272 | 271 | # Checks for system services |
273 | 272 | # |
274 | 273 | AC_SYS_LONG_FILE_NAMES |
274 | +TSU_GROUPED_TARGETS([have_grouped_targets=yes],[have_grouped_targets=no]) | |
275 | 275 | AX_AM_JOBSERVER |
276 | 276 | # |
277 | 277 | ############################################################################ |
@@ -292,6 +292,12 @@ | ||
292 | 292 | [enable_gcov=no]) |
293 | 293 | AM_CONDITIONAL([COND_GCOV],[test '!' "$enable_gcov" = no]) |
294 | 294 | # |
295 | +AC_ARG_ENABLE([icemap], | |
296 | + [AS_HELP_STRING([--enable-icemap], | |
297 | + [(re-)generate table code with Icemap [auto]])], | |
298 | + [], | |
299 | + [enable_icemap=auto]) | |
300 | +# | |
295 | 301 | AC_ARG_WITH([chise-ids], |
296 | 302 | [AS_HELP_STRING([--with-chise-ids=PATH], |
297 | 303 | [CHISE IDS database [auto]])], |
@@ -434,6 +440,17 @@ | ||
434 | 440 | [edict_decomp=]) |
435 | 441 | AC_SUBST([edict_decomp]) |
436 | 442 | # |
443 | +AS_IF([test "x$enable_icemap" = "xauto"], | |
444 | + [AC_MSG_CHECKING([whether to automatically enable Icemap]) | |
445 | + enable_icemap=no | |
446 | + m4_foreach_w([imcheckpath],[widthtab.c widthtab.h],[ | |
447 | + AS_IF([test '!' -s imcheckpath],[enable_icemap=yes]) | |
448 | + ]) | |
449 | + AS_IF([pwd | $GREP -q _build/sub],[enable_icemap=no]) | |
450 | + AC_MSG_RESULT([$enable_icemap]) | |
451 | + ]) | |
452 | +AM_CONDITIONAL([COND_ICEMAP],[test '!' "$enable_icemap" = no]) | |
453 | +# | |
437 | 454 | AC_ARG_ENABLE([parasite], |
438 | 455 | [AS_HELP_STRING([--enable-parasite=[yes|no|auto]], |
439 | 456 | [build as a parasite [auto]])], |
@@ -0,0 +1,52 @@ | ||
1 | +# | |
2 | +# SYNOPSIS | |
3 | +# | |
4 | +# TSU_GROUPED_TARGETS([run-if-true],[run-if-false]) | |
5 | +# | |
6 | +# DESCRIPTION | |
7 | +# | |
8 | +# Check whether Make supports invoking a recipe only once to build | |
9 | +# multiple targets with the "grouped targets" feature and "&:" syntax. | |
10 | +# This was a feature introduced in GNU Make 4.3, but we are testing | |
11 | +# the feature itself rather than the Make version. | |
12 | +# | |
13 | +# If Make supports grouped targets, then the run-if-true code is | |
14 | +# executed. Otherwise, the run-if-false code is executed. | |
15 | +# | |
16 | +# The substitution variable "grouped" is set to "&" if Make supports | |
17 | +# grouped targets and to the empty string if not; this allows use of | |
18 | +# the syntax "@grouped@:" to write recipes that will be grouped if | |
19 | +# possible and not alarming to Make when the feature doesn't exist. | |
20 | +# | |
21 | +# LICENSE | |
22 | +# | |
23 | +# This macro is released to the public domain by its author, | |
24 | +# Matthew Skala <mskala@ansuz.sooke.bc.ca>. | |
25 | + | |
26 | +#serial 1 | |
27 | + | |
28 | +AC_DEFUN([TSU_GROUPED_TARGETS], [ | |
29 | + AC_REQUIRE([AC_PROG_GREP]) | |
30 | + AC_REQUIRE([AC_PROG_MAKE_SET]) | |
31 | + AC_MSG_CHECKING([whether Make supports grouped targets]) | |
32 | + : "${TMPDIR:=/tmp}" | |
33 | + { | |
34 | + dir=`(umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null` && | |
35 | + test -d "$dir" | |
36 | + } || { | |
37 | + dir=$TMPDIR/foo$$-$RANDOM | |
38 | + (umask 077 && mkdir "$dir") | |
39 | + } | |
40 | + echo 'foo bar &: Makefile' > $dir/Makefile | |
41 | + echo ' @echo YEAH' >> $dir/Makefile | |
42 | + _make_gt_result=`$am_make -C $dir foo bar | $GREP YEAH` | |
43 | + rm -rf $dir | |
44 | + AC_SUBST([grouped],[]) | |
45 | + AS_IF([test "x$_make_gt_result" = "xYEAH"], | |
46 | + [AC_MSG_RESULT([yes]) | |
47 | + grouped='&' | |
48 | + $1], | |
49 | + [AC_MSG_RESULT([no]) | |
50 | + grouped='' | |
51 | + $2]) | |
52 | +]) |
@@ -52,7 +52,7 @@ | ||
52 | 52 | |
53 | 53 | # SILENT BUILD BLINKENLIGHTS |
54 | 54 | |
55 | -TSU_V_REDIR=$(if $(AM_V_at),>& /dev/null) | |
55 | +TSU_V_REDIR=$(if $(AM_V_at),> /dev/null 2>&1) | |
56 | 56 | |
57 | 57 | if COND_COLOUR |
58 | 58 | escchar:=$(strip $(shell echo x | tr 'x' '\033')) |
@@ -152,7 +152,7 @@ | ||
152 | 152 | kleknev_SOURCES = kleknev.c kleknev.h wrapper.c |
153 | 153 | kleknev_argo_SOURCES = kleknev-argo.c kleknev.h wrapper.c |
154 | 154 | |
155 | -# man1_MANS = kleknev.1 kleknev-argo.1 | |
155 | +dist_man1_MANS = kleknev.1 # kleknev-argo.1 | |
156 | 156 | |
157 | 157 | ############################################################################ |
158 | 158 |
@@ -122,9 +122,9 @@ | ||
122 | 122 | AC_CONFIG_SRCDIR([kleknev.c]) |
123 | 123 | AC_CONFIG_HEADERS([config.h]) |
124 | 124 | AC_CONFIG_MACRO_DIR([m4]) |
125 | -AC_REVISION([$Id: configure.ac 8755 2021-04-06 02:23:52Z mskala $]) | |
126 | -AC_COPYRIGHT([Copyright (C) 2013 Matthew Skala]) | |
127 | -AC_SUBST([release_date],["March 7, 2013"]) | |
125 | +AC_REVISION([$Id: configure.ac 9071 2021-06-27 03:00:17Z mskala $]) | |
126 | +AC_COPYRIGHT([Copyright (C) 2013, 2021 Matthew Skala]) | |
127 | +AC_SUBST([release_date],["July 1, 2021"]) | |
128 | 128 | # this must be early so it will happen before depfiles |
129 | 129 | TSU_FIX_MAKEFILE |
130 | 130 | AM_SILENT_RULES |
@@ -47,7 +47,7 @@ | ||
47 | 47 | |
48 | 48 | # SILENT BUILD BLINKENLIGHTS |
49 | 49 | |
50 | -TSU_V_REDIR=$(if $(AM_V_at),>& /dev/null) | |
50 | +TSU_V_REDIR=$(if $(AM_V_at),> /dev/null 2>&1) | |
51 | 51 | |
52 | 52 | if COND_COLOUR |
53 | 53 | escchar:=$(strip $(shell echo x | tr 'x' '\033')) |
@@ -192,9 +192,9 @@ | ||
192 | 192 | parallel-tests silent-rules]) |
193 | 193 | AC_CONFIG_SRCDIR([msk-ocra.mp]) |
194 | 194 | AC_CONFIG_MACRO_DIR([m4]) |
195 | -AC_REVISION([$Id: configure.ac 8799 2021-04-24 14:18:02Z mskala $]) | |
195 | +AC_REVISION([$Id: configure.ac 9071 2021-06-27 03:00:17Z mskala $]) | |
196 | 196 | AC_COPYRIGHT([public domain]) |
197 | -AC_SUBST([release_date],["March 28, 2021"]) | |
197 | +AC_SUBST([release_date],["July 1, 2021"]) | |
198 | 198 | # this must be early so it will happen before depfiles |
199 | 199 | TSU_FIX_MAKEFILE |
200 | 200 | AM_SILENT_RULES |
@@ -13,9 +13,9 @@ | ||
13 | 13 | \setlength{\parskip}{\baselineskip} |
14 | 14 | \raggedright |
15 | 15 | |
16 | -\title{OCR-A and OCR-B fonts\\version 0.3} | |
16 | +\title{OCR-A and OCR-B fonts\\version 0.4pre} | |
17 | 17 | \author{Matthew Skala} |
18 | -\date{March 28, 2021} | |
18 | +\date{July 1, 2021} | |
19 | 19 | |
20 | 20 | \begin{document} |
21 | 21 | \setmainfont{OCRB.otf} |