So far, Primefaces has used image sprites for displaying the sort icons. This leads to a problem if we want to make a different style for these icons; for example, I would make the icon "arrow up" more blurry at the first time the table loading because I want to highlight the icon "arrow down". I found a way that I can replace these icons with Font Awesome icons.
We will use "CSS Pseudo-classes" to achieve it. The hardest thing here is that we should handle displaying icons in different cases. There is a case both "arrow up" and "arrow down" showing and other case is only one of these icons is shown.
.ui-sortable-column-icon.ui-icon.ui-icon-carat-2-n-s {
background-image: none;
margin-left: 5px;
font-size: 1.1666em;
position: relative;
}
.ui-sortable-column-icon.ui-icon.ui-icon-carat-2-n-s:not(.ui-icon-triangle-1-s)::before {
content: "\f106";
font-family: "FontAwesome";
position: absolute;
top: -2px;
color: rgba(0,0,0,0.4);
}
.ui-sortable-column-icon.ui-icon.ui-icon-carat-2-n-s:not(.ui-icon-triangle-1-n)::after {
content: "\f107";
font-family: "FontAwesome";
position: absolute;
top: 5px;
color: rgba(0,0,0,1);
}
.ui-sortable-column-icon.ui-icon.ui-icon-carat-2-n-s.ui-icon-triangle-1-n::before {
color: rgba(0,0,0,1);
}
Hope it useful when you get the same issue. ;)