Virtual packages allow alternative packages to fulfill a dependency, when two or more packages are functionally equivalent for this use.
Virtual packages are mode by using the "any of many" dependency in an ebuild.
See the full list of virtual packages: virtual.
Substitute one virtual package for another
It is possible to substitute one virtual package for another by installing the desired package with the
--oneshot option, then removing the undesired package.
See this section on substituting a source based dependency for "-bin" version for an example.