The suggestion with SkipFilter in this answer is not wrong but not applicable for your case (as @AdamSkywalker pointed out).
But you can create two separate SkipFilters on top of ColumnRangeFilters for ranges ["0", "fs") and ("fs", "z"]. And these filters should be combined with FilterList and MUST_PASS_ONE FilterList's combination rule.
Example code which can be tested in HBase shell:
import org.apache.hadoop.hbase.util.Bytes
import org.apache.hadoop.hbase.filter.ColumnRangeFilter
import org.apache.hadoop.hbase.filter.SkipFilter
import org.apache.hadoop.hbase.filter.FilterList
import org.apache.hadoop.hbase.filter.FilterList.Operator
scan 'table', {FILTER => FilterList.new(FilterList::Operator::MUST_PASS_ONE,SkipFilter.new(ColumnRangeFilter.new(Bytes.toBytes("0"), true, Bytes.toBytes("fs"), false)),SkipFilter.new(ColumnRangeFilter.new(Bytes.toBytes("fs"), false, Bytes.toBytes("z"), true)))}
In Java API code your filter should look like that:
SkipFilter range1 = new SkipFilter(new ColumnRangeFilter(Bytes.toBytes("0"), true, Bytes.toBytes("fs"), false));
SkipFilter range2 = new SkipFilter(new ColumnRangeFilter(Bytes.toBytes("fs"), false, Bytes.toBytes("z"), true))
FilterList filter = new FilterList(FilterList.Operator.MUST_PASS_ONE, range1, range2)
Note that in this example column name range is limited to printable symbols only. If you use byte arrays as column names you should define wider range.