Closed brightuw closed 10 months ago
I'm looking forward to the design for this!
@amyjko Requesting a design review!
I like it! A few edge cases:
my *test* /string
). Should there be a "custom" in the weight dropdown, for example, and a dash in the checkbox? Or are the controls hidden and a message is shown?Thanks for the insight! I will respond to each bullet point with bullet points respectively.
my *test* /string
. If that is the case, I would propose to display weight as "Mixed" and italics as false, with both options always available to be changed. Then I would propose following Google Docs's behavior and overriding everything when a specific weight is selected and italicizing everything in the text when italics is toggled to true. "Mixed" will only be displayed in this edge case and is not an option in the default dropdown.^text^
, and then switched to a face that has bold but not extra bold, should we:
In my opinion, I think option 2 is the most beneficial, maintaining the user's original intention of font weight while also not confusing them with markup notations. This also allows the font to eventually be defaulted back to regular (400) weight when a face with no other weight support is chosen.
Thanks @brightuw, I think these are good defaults. I like "Mixed" instead of "Custom"; it's more accurate. Once you incorporate these design details back into the design spec, I'll remove the needs design
tag from this and add buildable
.
Hi, @amyjko. I've made changes to the design specifications to include these new edge cases. However, now I have two additional concerns.
@amyjko I finished implementing these new aspects in the design proposal and am now requesting a design review.
Okay, this looks ready to build to me! Fantastic work on getting the details right for this. I think this will be a solid improvement to the styling experience, and help with teaching the markup syntax.
Hi @brightuw and @simku22!
It's the end of the quarter, so please post an update on this issue. Things to consider:
If there's nothing to change above, then at least post a comment indicating that you've seen this. Thanks!
No reply, unassigning everyone to free up the issue for others to work on. Reassign yourself if you're still working on it.
Phew, building this was a beast! But I'm pretty happy with the final implementation. I mostly followed the design spec, with a few additional tweaks for UI consistency, and a few changes in behavior due to technical limitations of formatting (e.g., we didn't account for multi-paragraph text).
What's the problem?
It can be confusing and unclear as to how to bold, italicize, underline, etc. a phrase. For example, you have to wrap the phrase with `` and then also wrap it with a certain syntax depending on what type you want it to be (bold, italic). This also requires users to memorize how to markup these texts, (ie. remembering that ** is bold, ^^ is extra bold, etc.)
What's the design idea?
Creating a shortcut menu in the palette that allows users to easily toggle the weight or italic status of the phrase. For convenience's sake, the buttons will mark up the entirety of the phrase.
Who benefits?
This will benefit users who might want to use font weights and italics. This can also be a learning experience for them, seeing that when text is toggled as bold/italicized, it is actually just being wrapped in a markup syntax (ie. **, ^^, ~~, etc.)
Design specification
General description
We are proposing to add two (2) features/shortcuts that will enable fast markup, located in the palette menu. One is a dropdown menu displaying all the available weights of the current font, displayed as what it would look like (seen in Figure. 2). The second is a boolean toggle that italicizes the text.
Visual representations
Figure 1. Proposed palette menu layout.
Opening the weight menu will open a dropdown menu that allows users to select an available weight size, dependent on the font face chosen.
Figure 2. The weight dropdown menu opens and displays the available weight sizes
Depending on what the user selects, the Phrase code in the program will be altered to the appropriate markup syntax and the text displayed on the Stage will be altered as such. For example:
Figure 3. Unmodified, original text with regular weight size and without italics or underline
Figure 4. Text with bold weight size selected and underlined. Does not have italics
Additional specifications
my *test* /string
: with "my" having no markups and in regular (400) size, "test" as bold (700) size, and "string" italicized), display weight as "Mixed" and italics as false (because the entire text is not italicized), with both options always available to be changed. Override the entire text when a specific weight is selected and italicize the entire text when italics is toggled to true. "Mixed" will only be displayed in this edge case and is not an option in the default dropdown.^text^
. Then the user changes the font to Arvo which only has regular (400) or bold (700), markup should change to bold (700)*test*