On Fri, 17 Nov 2023 13:01:58 GMT, Pavel Rappo <pra...@openjdk.org> wrote:

>> Please review a change to the font used to display the content of an `@see` 
>> tag.
>> 
>> The underlying trigger for this is in `ClassFileFormatVersion.java` which 
>> contains 
>>   `@see System#getProperties System property {@code java.class.version}`
>> 
>> The (reasonable) presumption is that by default the label will be in plain 
>> font, except for the trailing `{@code...}` tag.
>> Because `SeeTaglet` always generates a link with code font, the nested tag 
>> gives a nested `<code>...</code>` element, which is reported as an error by 
>> `html-tidy`.
>> 
>> However, there are numerous examples in the JDK report where there is a 
>> less-reasonable presumption that the output _will_ be in code font.  This is 
>> often used to give a "slightly different" rendering of the target, such as 
>> omitting the parentheses and any parameters from a link to a method.  There 
>> are too many such examples to easily change, even though it would be better 
>> to do so for consistency.
>> 
>> The dilemma is resolved in favor of not using code font when the label looks 
>> like a phrase and not a form of the target signature, on the grounds that it 
>> is better to omit `<code>...</code>` and allow the author to opt-in to using 
>> code font either explicitly or with a `{@code tag}`, since there is no way 
>> of opt-out of being in code font within the content of the element.
>> 
>> Thus, the fix is a change to `SeeTaglet` which analyses the label to see if 
>> it appears to be a phrase of some sort, and not a form of a reference to the 
>> target. If it appears to be a phrase, code font is not used; if it appears 
>> to be a reference to the target, code font is used.
>> 
>> Note: initially, the solution was more focussed on examining the label in 
>> more detail and matching it more accurately with the reference, but there 
>> are enough variations in the JDK code that this was deemed impractical. The 
>> solution to focus on whether the label looks like a phrase is simpler and 
>> more reliable.
>> 
>> This does change the font used for some links in the JDK documentation, 
>> including the link in `ClassFileFormatVersion` described above.  (Only the 
>> font, as indicated by the use of `<code>` is changed, never the target URL 
>> or the text of the link.) Many of the other changes are as expected, such as 
>> links to "security properties" or "Types and Elements".  There are a few 
>> places where the label text is a mixture of a signature and an explanation, 
>> which used to be all in code font and is now all in plain font. For these 
>> cases, it would be good to (separately) mod...
>
> src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SeeTaglet.java
>  line 198:
> 
>> 196:      * {@return {@code true} if the label should be rendered in plain 
>> font}
>> 197:      *
>> 198:      * The method uses a heuristic, to see string form of the label is 
>> a substring of the reference.
> 
> Suggestion:
> 
>      * The method uses a heuristic, to see if the string form of the label is 
> a substring of the reference.

thanks; fixed

> src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/taglets/SeeTaglet.java
>  line 223:
> 
>> 221:      * @param label the label
>> 222:      */
>> 223:     private boolean isPlain(String refSignature, List<? extends 
>> DocTree> label) {
> 
> Should we reflect any part of this machinery in the 
> [specification](https://docs.oracle.com/en/java/javase/21/docs/specs/javadoc/doc-comment-spec.html#see),
>  which is currently silent on presentation details of `@see`?

I'm writing a CSR.

> test/langtools/jdk/javadoc/doclet/testSeeTag/TestSeeTagFont.java line 2:
> 
>> 1: /*
>> 2:  * Copyright (c) 2002, 2023, Oracle and/or its affiliates. All rights 
>> reserved.
> 
> 2002?

Fixed.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/16699#discussion_r1397947803
PR Review Comment: https://git.openjdk.org/jdk/pull/16699#discussion_r1397948196
PR Review Comment: https://git.openjdk.org/jdk/pull/16699#discussion_r1397947070

Reply via email to