Icons fonts
TopLogic supports symbol fonts that can be used for button, menu and object symbols. To integrate your own symbol font, you must carry out the following steps. The module ext.com.fontawesome
offers the free version of the symbol font "FontAwesome"(https://fontawesome.com/). This module serves as a detailed example of how you can add your own user-defined symbol font to your application.
Making font resources available to the application
Place your font files (*.eot
, *.svg
, *.ttf
, *.woff
, *.woff2
) in the application's webapp folder. For example, the symbol font "FontAwesome" is included in the distribution at /ext.com.fontawesome/webapp/webfonts/...
.
Integrate accompanying CSS
Place the CSS file (*.css
) for the font in the application's webapp folder. The CSS file for "FontAwesome" can be found as an example at /ext.com.fontawesome/webapp/style/fontawesome/all.min.css
.
Note: As the CSS file of the font refers to the font resources, make sure that both files (the CSS and the font files) are saved in a location where the internal references in the CSS are valid. E.g. "FontAwesome" has the following style rule:
@font-face {
font-family: 'Font Awesome 5 Free';
font-style: normal;
font-weight: 900;
src: url("../webfonts/fa-solid-900.eot");
}
Therefore, the font resources (e.g. fa-solid-900.eot
) must exist in a directory named ../webfonts
relative to the style folder of the application (webapp/style
). All CSS is included in a single resource at runtime, which is offered to the client via the URL https://your.server/your-app/style/top-logic.css
, regardless of where the actual CSS files added to the theme are stored in the application. Therefore, the references in the CSS must be relative to this URL.
Inserting CSS into the standard theme
Add a configuration entry that inserts the CSS file of the font into the default theme core
(or your custom theme if you only want to use the font in a single theme).
To do this, create a directory src/main/webapp/WEB-INF/themes/core
in your project and create a file theme.xml
with the following content:
<theme>
<styles>
<style name="/style/fontawesome/all.css"/>
</styles>
</theme>
Note: The CSS file (here the CSS of the Fontawesome icon font) is referenced with a name in relation to the root folder of the web application resource.
Use of CSS icon references
An icon font cools icons with CSS classes that have been added to an inline HTML element. E.g. "FontAwesome" refers to the "Ambulance" symbol with the CSS classes <i class="fas fa-ambulance"></i>
(see https://fontawesome .com/icons/ambulance?style=solid).
In TopLogic, you can refer to symbol font symbols in all configuration properties of the type ThemeImage
with the prefix css:
with the CSS classes defined by your attached symbol font. For example, you can reference the "ambulance" symbol from "FontAwesome" with the symbol reference "css:fas fa-ambulance".
Examples
Symbol references in the layout
You can define a button with such a symbol font reference (e.g. /com.top_logic.demo/webapp/WEB-INF/layouts/demo/table/tree_grid.xml
):
<button id="..."
class="..."
image="css:fas fa-globe"
resourceKey="..."
/>
Icon references in the model
Icon font references can be used to annotate icons for such model elements (e.g. /com.top_logic.demo/webapp/WEB-INF/model/DemoTypes.model.xml
):
<interface name="DemoTypes.X">
<annotations>
<instance-presentation icon="css:fas fa-handshake demo-blue"/>
</annotations>
...
</interface>
In the example above, you can see that you can add our own custom CSS classes to those defined by your icon font to customize the display of the icon at that specific location. In the example above, the CSS class demo-blue
colors the icon blue.