[
https://issues.apache.org/jira/browse/NETBEANS-2617?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eirik Bakke updated NETBEANS-2617:
----------------------------------
Description:
Once NETBEANS-2604 is done, we should start replacing commonly seen NetBeans
icons with SVG versions, for improved appearance on Retina/HiDPI displays.
h2. UPDATE:
[Here|https://docs.google.com/spreadsheets/d/1U_pj-I3hk9Wj_7lvHcUDsZfFfBSyCkSGqBuv0qt_qXw/edit?usp=sharing]
is a Google Sheet where we can track progress of contributions and
prioritization of icons.
With some practice, it takes on average 30 minutes to create an SVG version of
a typical icon in Adobe Illustrator. See the attached illustration and
Illustrator template. The Illustrator template includes a few icons which have
already been converted.
In NETBEANS-2605, a prioritized list of icons to convert was produced (now
migrated to the Google Sheet above). By redrawing the most commonly seen icons
first, we can get the greatest "bang for the buck" in terms of improving
NetBeans' appearance on HiDPI displays. Once we have a batch of icons ready to
integrate into the NetBeans repository, Eirik will redo the duplicate detection
and ensure the SVGs end up in all relevant locations, and start creating pull
requests.
See also the overview page for HiDPI improvements on
[https://cwiki.apache.org/confluence/display/NETBEANS/HiDPI+%28Retina%29+improvements]
.
The style guide and process notes has been moved to [this confluence
page|https://cwiki.apache.org/confluence/display/NETBEANS/SVG+Icon+Style+Guide+and+Process].
was:
Once NETBEANS-2604 is done, we should start replacing commonly seen NetBeans
icons with SVG versions, for improved appearance on Retina/HiDPI displays.
h2. UPDATE:
[Here|https://docs.google.com/spreadsheets/d/1U_pj-I3hk9Wj_7lvHcUDsZfFfBSyCkSGqBuv0qt_qXw/edit?usp=sharing]
is a Google Sheet where we can track progress of contributions and
prioritization of icons.
With some practice, it takes on average 30 minutes to create an SVG version of
a typical icon in Adobe Illustrator. See the attached illustration and
Illustrator template. The Illustrator template includes a few icons which have
already been converted.
In NETBEANS-2605, a prioritized list of icons to convert was produced (now
migrated to the Google Sheet above). By redrawing the most commonly seen icons
first, we can get the greatest "bang for the buck" in terms of improving
NetBeans' appearance on HiDPI displays. Once we have a batch of icons ready to
integrate into the NetBeans repository, Eirik will redo the duplicate detection
and ensure the SVGs end up in all relevant locations, and start creating pull
requests.
See also the overview page for HiDPI improvements on
https://cwiki.apache.org/confluence/display/NETBEANS/HiDPI+%28Retina%29+improvements
.
If you wish to contribute to this effort, comment here; Eirik will coordinate
to make sure multiple people are not working on the same icons.
h2. Proposed Style Guide for Vectorized Icons
*[See tutorial video here.|https://vimeo.com/667860571]*
* Vector icons should be drawn in Adobe Illustrator, or alternatively Inkscape
or another free tool. In Illustrator, each icon should be one named artboard,
sized to the correct size in pixels. See the attached Illustrator template.
(Adobe Illustrator comes with a free 7-day trial, after which it's $35/month.
If cost is a problem but you want to contribute your time to draw icons, ask
Eirik...)
* If you prefer to use Inkscape instead, and want to contribute icons, that's
fine; just make sure to follow the same consistent style as the other icons. If
using Inkscape, perhaps pick another group of icons than the ones that are
currently being drawn in Illustrator. It's best to draw all similar-looking
icons in the same tool.
* For each icon to be vectorized, place the old bitmap version of the icon in a
separate layer ("Old Bitmap Icons" in the Illustrator template). You can then
draw the vectorized version on top.
* Since most of the existing NetBeans icons follow a quite consistent visual
style, and to simplify the job of creating new icons, it is best to keep the
shape of the new vectorized icons the same as in the old bitmap icons. For
instance, a rectangle of size 5x4px in the bitmap icon should probably become a
rectangle of 5x4px in the vector version.
* Keep the same general colors in vectorized icons as in the corresponding old
bitmap icons.
* Some of the old bitmap icons use grays with a slightly blue tint (e.g. the
[file
icons|https://raw.githubusercontent.com/apache/netbeans/master/java/refactoring.java/src/org/netbeans/modules/refactoring/java/resources/newFile.png]).
This style is out of fashion (resembling 1990s Solaris GUIs etc.); use neutral
greys instead.
* If the old bitmap icon is complex, it is fine to simplify it a bit when
drawing vectorized versions.
* Omit gradients, bevels, and unnecessary drop shadows. They take more time to
draw, and with "flat design", they are now out of fashion in any case.
* Use a stroke width of 1px around the main shapes in the icon, like in the
existing bitmap icons. The new icons should look consistent with the existing
bitmap icons, especially since we may see bitmap icons and vector icons
side-by-side for a long time. Within shapes, 0.5px strokes can be used for
finer details. (0.5px strokes become 1 device pixel on Retina screens, which
have a 2x scaling.)
* The 1px strokes that outline the icon's shapes should typically be 33%
transparent black on top of the shape's background color, or of similar
darkness. See the examples in the attached "style example.png" file.
* When the same shape occurs in different icons but at different sizes (e.g.
the small magnifying glass in find_selection.png vs. the large magnifying glass
in zoom_in.png), strokes and borders should still remain at the same thickness
(1px for external borders and 0.5px for internal strokes).
* Horizontal and vertical strokes must be aligned to the pixel grid.
* While it may sometimes be necessary to "outline" strokes for the purposes of
applying boolean operations (e.g. subtracting another shape from the stroke
only), strokes should be left as strokes whenever possible, as this leads to
smaller SVG files, and makes shapes within the icon easier to modify.
* For icons in the main IDE toolbar (as opposed to the editor toolbar), which
exist in both 16x16 and 24x24 sizes, base the vector version on the smaller
16x16 one, which is sometimes simpler. (This is already done in the prioritized
icon list above.)
* Avoid unnecessary anchor points (illustration from IntelliJ's style guide:
[correct|https://jetbrains.design/intellij/images/icons/[email protected]]
vs.
[incorrect|https://jetbrains.design/intellij/images/icons/[email protected]]).
h2. Process for Exporting SVG Files from Adobe Illustrator
1) As mentioned above, each icon needs to already be in its own named artboard,
sized to the correct size in pixels. Verify that horizontal and vertical lines
are aligned to pixel boundaries.
2) Save the Illustrator file to a new file, to avoid accidentally overwriting
the original during the export process.
3) Delete the "Old Bitmap Icons" layer. (This is important, otherwise the old
bitmap icon will be embedded into the exported SVG file.)
4) From the "File" menu, click "Save a Copy". Select a folder, use the
following settings, and click OK:
{noformat}
File name: icon (will be prefixed the artboard names; mandatory)
Save as type: SVG
Use artboards: Check and select either "All", or a range if not all
artboards are used (e.g. "1-8")
{noformat}
5) In the SVG export options dialog that shows up, enter the following
settings, which have been tested and are known to work with NetBeans' SVG
loader implementation and the process outlined here:
{noformat}
SVG Profiles: SVG 1.1
Type: Convert to outline
CSS Properties: "Style elements"
Uncheck "Include Unused Graphic Styles"
Decimal Places: 3
Encoding: UTF-8
Responsive: Disabled
{noformat}
6) Convert each SVG file to UNIX line endings. (E.g. "dos2unix *.svg" on Linux.)
7) Add Apache license headers to each of the exported SVG files. (SVG files are
just XML files. See the source of
[this|https://raw.githubusercontent.com/eirikbakke/incubator-netbeans/master/platform/openide.actions/src/org/openide/resources/actions/undo.svg]
file for an example of a correct license header.)
8) Now meticulously copy each of the exported files into appropriate locations
in the NetBeans repository. Some bitmap files may be used in multiple
locations; it may be necessary to copy the corresponding SVG into multiple
locations as well (see below for how to identify where). When creating an SVG
version of an icon named "someicon.png" or "someicon.gif", the SVG file should
be in the same folder and named "someicon.svg". The NetBeans ImageLoader will
automatically load the SVG file instead of the bitmap file.
h2. Commands for Identifying Icons That Exist in Multiple Locations in the
NetBeans Sources
{code:bash}
# While in the root of a cloned netbeans repo:
git ls-files | grep -v '/test/' | grep '[.]png$' > ../images.txt
git ls-files | grep -v '/test/' | grep '[.]gif$' >> ../images.txt
while read in; do sha256sum "$in"; done < ../images.txt | sort >
../checksums.txt
# Now you can search checksums.txt for files with the same checksum.
{code}
Additionally, consult https://people.csail.mit.edu/ebakke/misc/netbeans-icons/
to identify other icons that have a similar appearance, which can all be
replaced by the same SVG icon (e.g. the 5 different "warning" or "magnifying
glass" motifs). I recommend searching and reviewing these icons by name. E.g.
to find all icons looking like a magnifying glass, review all icons with
"search", "find", "zoom", or "magnify" in their name.
> Redraw common icons in SVG
> --------------------------
>
> Key: NETBEANS-2617
> URL: https://issues.apache.org/jira/browse/NETBEANS-2617
> Project: NetBeans
> Issue Type: Improvement
> Components: platform - Other
> Affects Versions: 11.0
> Environment: Windows, Linux, and MacOS
> Reporter: Eirik Bakke
> Priority: Major
> Labels: HiDPI
> Attachments: 210604 Icons Overview Cropped.png, 211228 Consolidated
> Icons.ai, 220101 Updated Dark Filter Test.png, ScreenshotExample.png,
> ide.editor.bookmarks.ai, ide.editor.macros.ai, ide.seperator.breadcrumbs.ai,
> image-2022-01-19-14-41-29-967.png, netbeans_icons_illustrator_template.ai,
> style example (dark filter).png, style example.png
>
>
> Once NETBEANS-2604 is done, we should start replacing commonly seen NetBeans
> icons with SVG versions, for improved appearance on Retina/HiDPI displays.
> h2. UPDATE:
> [Here|https://docs.google.com/spreadsheets/d/1U_pj-I3hk9Wj_7lvHcUDsZfFfBSyCkSGqBuv0qt_qXw/edit?usp=sharing]
> is a Google Sheet where we can track progress of contributions and
> prioritization of icons.
> With some practice, it takes on average 30 minutes to create an SVG version
> of a typical icon in Adobe Illustrator. See the attached illustration and
> Illustrator template. The Illustrator template includes a few icons which
> have already been converted.
> In NETBEANS-2605, a prioritized list of icons to convert was produced (now
> migrated to the Google Sheet above). By redrawing the most commonly seen
> icons first, we can get the greatest "bang for the buck" in terms of
> improving NetBeans' appearance on HiDPI displays. Once we have a batch of
> icons ready to integrate into the NetBeans repository, Eirik will redo the
> duplicate detection and ensure the SVGs end up in all relevant locations, and
> start creating pull requests.
> See also the overview page for HiDPI improvements on
> [https://cwiki.apache.org/confluence/display/NETBEANS/HiDPI+%28Retina%29+improvements]
> .
> The style guide and process notes has been moved to [this confluence
> page|https://cwiki.apache.org/confluence/display/NETBEANS/SVG+Icon+Style+Guide+and+Process].
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists