On Wednesday, 9 October 2024 16:33:21 BST G. Branden Robinson wrote: > > If the warning was about the AT&T fontnames being deprecated but no > > change to the font used (i.e. continue to use CR), even though there > > would be 1000+ warnings, it would achieve your desire to drop support > > for the ancient font names but in a way which did not affect rendering > > of the document in the interim. > > What do you suggest instead?
Hi Branden, I tnought something like this:- diff --git a/src/roff/troff/env.cpp b/src/roff/troff/env.cpp index a087bc601..2dea476ce 100644 --- a/src/roff/troff/env.cpp +++ b/src/roff/troff/env.cpp @@ -556,6 +556,8 @@ static node *configure_space_underlining(bool b) return new device_extension_node(m, 1); } +static char ATnTfonts[]="#AX|ABI#KR|BMR#KI|BMI#KB|BMB#KX|BMBI#C|CR#CW|CR#CO| CI#CX|CBI#H|HR#HO|HI#HX|HBI#Hr|HNR#Hi|HNI#Hb|HNB#Hx|HNBI#NX|NBI#PA|PR#PX| PBI#ZI|ZCMI#"; + bool environment::set_font(symbol nm) { if (line_interrupted) { @@ -571,6 +573,17 @@ bool environment::set_font(symbol nm) } else { prev_fontno = fontno; + char cnm[8]="#"; + strncat(cnm+1,nm.contents(),6); + char *found=strstr(ATnTfonts,cnm); + char *alias=found+strlen(cnm); + + if (0 != found && *alias++ == '|') { + int alen=strcspn(alias,"#"); + warning(WARN_FONT, "obsolete AT&T font names (such as '%1') have been deprecated.", cnm+1); + memset(found+1,32,alias-found+alen-1); + } + int n = symbol_fontno(nm); if (n < 0) { n = next_available_font_position(); Of course this is not a serious patch (although it works). I've never dabbled in C++, I have not written anything in C for over 30 years, and I don't have a very deep understanding of groff internals, but it may give you an idea how deprecation of the AT&T font names could be handled, rather than sudden removal. You can test by reinstating the .ftr requests and run a document using the old font names. You should see a warning for each different obsolete font used, rather than repeated message each time the font is used. Anyway, you did ask, I'm sure you could do it better. Cheers Deri